首先看一段代码:
#include
int main()
{
char *str="hello world";
char array[15]="hello world";
printf("str is %s ,size is %d\n",str,sizeof(str));
printf("str is %s ,strlen is %d\n",str,strlen(str));
printf("array is %s ,size is %d\n",array,sizeof(array));
return 0;
}
如果问你第一行打印的输出是多少?你想当然的认为是字符串的长度,那么你错了,输出是:
str is hello world ,size is 4
str is hello world ,strlen is 11
array is hello world ,size is 15
答案是4,一个指针所占字节数;所以要取得str字符串的长度要用strlen,而且要注意该值是不含末尾'\0'的。
当然,把这三行打印放在一起,很容易就对比出不同,想到sizeof是算类型字节大小的,但实际用时,很容易就想当然了,这种问题查起来也很不好发现!
阅读(2261) | 评论(0) | 转发(0) |