sizeof的下面两个例子有点看不懂,请大家给指点一下!

[复制链接]
2797|3
 楼主| ccjchen 发表于 2009-8-31 19:51 | 显示全部楼层 |阅读模式
第一个例子: char* ss = "0123456789";

  sizeof(ss) 结果 4 ===》ss是指向字符串常量的字符指针
难道指针类型占据4个空间?
第二个例子:
char q[]="abc";


  char p[]="a\n";

  sizeof(q),sizeof(p),strlen(q),strlen(p);

  结果是 4 3 3 2
我不懂sizeof(p)为什么是 3 ?strlen(p)为什么是2?
yewuyi 发表于 2009-8-31 20:16 | 显示全部楼层
到底是多少,首先需要知道你用的什么编译器,各个编译器是有差异的。
soler_z 发表于 2009-9-1 01:04 | 显示全部楼层
第一个例子: char* ss = "0123456789";

  sizeof(ss) 结果 4 ===》ss是指向字符串常量的字符指针
难道指针类型占据4个空间?
第二个例子:
char q[]="abc";


  char p[]="a\n";

  sizeof(q),sizeof(p), ...
ccjchen 发表于 2009-8-31 19:51

第一个问题,,
ss是指针,sizeof(ss)就是算ss指针的地址有多少字节,一般地址都是四个字节的吧。字节可以用%p输出一下它的地址就能看到了。
第二个问题,,char p[]="a\n"    'a','\n','\0'这不就是三个字符吗?
既然你sizeof q知道,这个也应该知道的啊。
 楼主| ccjchen 发表于 2009-9-1 09:01 | 显示全部楼层
谢谢,我把\n当成\0了不好意思
您需要登录后才可以回帖 登录 | 注册

本版积分规则

175

主题

446

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部