Chinaunix首页 | 论坛 | 博客
  • 博客访问: 319060
  • 博文数量: 45
  • 博客积分: 2079
  • 博客等级: 上尉
  • 技术积分: 464
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-03 16:57
文章分类

全部博文(45)

文章存档

2015年(1)

2013年(1)

2012年(9)

2011年(2)

2010年(32)

分类:

2010-12-09 16:24:39

首先看一段代码:
#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是算类型字节大小的,但实际用时,很容易就想当然了,这种问题查起来也很不好发现!
阅读(2255) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~