大家清楚 sizeof 和 strlen 的区别吗?
sizeof是运算符,确定的是字符所占空间大小,参数可以有数组、指针、类型、对象、函数等。
strlen是C语言的标准库函数,确定是字符串的大小,目的是找到\0,\0之前出现多少个字符,字符串长度就是几,如果找不到可能就是随机值。
下面有几组例题:
大家可以自行验证,每一行后面都有我写的答案和解析.
1、字符串放进数组里
sizeof用法计算
char arr[]="abcdef";
printf("%d\n",sizeof(arr));
printf("%d\n",sizeof(arr+0));
printf("%d\n",sizeof(*arr));
printf("%d\n",sizeof(arr[1]));
printf("%d\n",sizeof(&arr));
printf("%d\n",sizeof(&arr+1));
printf("%d\n",sizeof(&arr[0]+1));
strlen用法计算
printf("%d\n",strlen(arr));
printf("%d\n",strlen(arr+0));
printf("%d\n",strlen(*arr));
printf("%d\n",strlen(arr[1]));
printf("%d\n",strlen(&arr));
printf("%d\n",strlen(&arr+1));
printf("%d\n",strlen(&arr[0]+1));
2、字符串放进指针里
sizeof用法计算
char*p="abcdef";
printf("%d\n",sizeof(p));
printf("%d\n",sizeof(p+1));
printf("%d\n",sizeof(*p));
printf("%d\n",sizeof(p[0]));
printf("%d\n",sizeof(&p));
printf("%d\n",sizeof(&p+1));
printf("%d\n",sizeof(&p[0]+1));
strlen用法计算
printf("%d\n",strlen(p));
printf("%d\n",strlen(p+1));
printf("%d\n",strlen(*p));
printf("%d\n",strlen(p[0]));
printf("%d\n",strlen(&p));
printf("%d\n",strlen(&p+1));
printf("%d\n",strlen(&p[0]+1));
sizeof和strlen看起来简单,但实际上使用的时候得出的答案又是否符合你的期望呢
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)