strlen和sizeof的使用及用法补充
2015-03-26 10:03
381 查看
<首先要知道strlen是求长度的,而sizeof是求大小的>
1.strlen的基本用法
因为strlen计算长度时是以‘\0’为基准的,它会直到遇到‘\0’时就停止计算。主函数里第一行数组初始化时自动在最后添加了一个‘\0’,而第二行不会添加‘\0’,所以第二种并不确定‘\0’具体出现的位置。
2.sizeof的基本用法
3.有关于指针的
把代码稍微改动一下:
再看一个代码:
4.关于数组初始化了元素个数时
若把程序稍微改动一下:把str[10]改为str[4]时strlen输出的值为随机值。因为还会添加一个‘\0’,数组大小超出了4个元素变成了5个。
5.关于数组做函数参数时
<总结>:只要记住最核心的一句话:strlen所求的是长度,以‘\0’作为计算的结束标志,若找不到‘\0’事则输出随机值;而sizeof所求的是大小,当数组以字符串形式给出初始化时,其所求的长度需要加上‘\0’。指针的大小永远为4。
1.strlen的基本用法
<span style="font-size:18px;color:#993300;"><span style="color:#330000;">#include<stdio.h> #include<string.h> int main() { char arr1[]="abcd"; char arr2[]={'a','b','c','d'}; printf("%d\n",strlen(arr1));//此时输出为4 printf("%d\n",strlen(arr2));//此时输出为随机值 return 0; }</span></span>为什么会是随机值呢?
因为strlen计算长度时是以‘\0’为基准的,它会直到遇到‘\0’时就停止计算。主函数里第一行数组初始化时自动在最后添加了一个‘\0’,而第二行不会添加‘\0’,所以第二种并不确定‘\0’具体出现的位置。
2.sizeof的基本用法
<span style="font-size:18px;color:#993300;"><span style="color:#330000;">#include<stdio.h> #include<string.h> int main() { char arr1[]="abcd"; char arr2[]={'a','b','c','d'}; printf("%d\n",sizeof(arr1));//此行输出为5 printf("%d\n",sizeof(arr2));//此行输出为4 return 0; }</span></span>第一种初始化方式添加了‘\0’,所以总的有五个字符,而第二种没有‘\0’,所以数组元素大小为4。
3.有关于指针的
<span style="font-size:18px;color:#993300;"><span style="color:#330000;">#include<stdio.h> #include<string.h> int main() { char *str="abcdef"; printf("%d\n",strlen(str));//此行输出为6 printf("%d\n",sizeof(str));//此行输出为4 return 0; }</span></span>注意:指针的大小永远为4,所以sizeof输出的是4。
把代码稍微改动一下:
<font color="#993300" size="4"><span style="color:#330000;"><span style="color:#336666;"><span style="color:#330000;">#include<stdio.h> #include<string.h> int main() { char str[]="abcdef"; printf("%d\n",strlen(arr1));//此行输出为6 printf("%d\n",sizeof(arr2));//此行输出为7 return 0; }</span></span></span></font>相同的道理,sizeof计算的时候还加上了‘\0’。
再看一个代码:
<span style="font-size:18px;color:#993300;"><span style="color:#330000;">#include<stdio.h> #include<string.h> int main() { int a=1; int b=2; int c=3; char *pArray[10]={&a,&b,&c}; printf("%d\n",strlen(pArray));//此时输出为3 printf("%d\n",sizeof(pArray));//此时输出为40 return 0; }</span></span>上边定义的是指针数组,数组里每个元素都为指针。所以数组大小为10,每个元素大小又为4,总共就为40。
4.关于数组初始化了元素个数时
<span style="font-size:18px;color:#993300;"><span style="color:#330000;">#include<stdio.h> #include<string.h> int main() { char str[10]="abcd"; printf("%d\n",strlen(str));//此行输出为4 printf("%d\n",sizeof(str));//此行输出为10 return 0; }</span></span>当数组初始化时固定了元素个数时,siazof计算的是驻足整个总共的大小。
若把程序稍微改动一下:把str[10]改为str[4]时strlen输出的值为随机值。因为还会添加一个‘\0’,数组大小超出了4个元素变成了5个。
5.关于数组做函数参数时
<span style="font-size:18px;color:#336666;"><span style="color:#330000;">#include<stdio.h> void fun(int array[10]) { printf("%d\n",sizeof(array));//此时输出的时4 } int main() { int array[10]={0}; fun(array); return 0; } </span></span>数组名做函数参数时,实际上是发生了降级处理。这里的array在函数里面作参数时传的是首元素的地址。因此sizeof所求的是数组中第一个元素的大小。
<总结>:只要记住最核心的一句话:strlen所求的是长度,以‘\0’作为计算的结束标志,若找不到‘\0’事则输出随机值;而sizeof所求的是大小,当数组以字符串形式给出初始化时,其所求的长度需要加上‘\0’。指针的大小永远为4。
相关文章推荐
- 记录wcslen,strlen,sizeof,_coutof等的用法和区别
- sprintf、atoi、strlen、strcat、memset、sizeof的一些用法总结
- C语言:内存地址分析 & sizeof和strlen用法总结
- sizeof和strlen区别,static和const的使用
- sizeof与strlen使用,字符串指针数组
- 正确使用sizeof和strlen
- sizeof 和 strlen用法
- sizeof和strlen的使用与区别
- sizeof 和strlen的用法
- sizeof 与 strlen 的一些用法及区别
- C语言中sizeof与strlen的用法区别
- sizeof和strlen的使用方法和区别
- C语言中的sizeof操作符用法及和strlen的区别
- sizeof与strlen的用法
- sizeof和strlen区别和使用方法
- sizeof()和strlen()区别和使用方法
- strlen与sizeof的区别和用法
- NUnit详细使用用法(补充)--在.NET中如何利用NUnit测试Private和Protected方法
- c语言中sizeof 和strlen的用法
- Sizeof与strlen区别以及用法