| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 587 人关注过本帖
标题:一直不解的问题!
只看楼主 加入收藏
xiehongyou
Rank: 1
等 级:新手上路
帖 子:84
专家分:0
注 册:2004-8-29
收藏
 问题点数:0 回复次数:5 
一直不解的问题!

main() { char s[]="\n123\\"; printf("%d,%d\n",strlen(s),sizeof(s));

getch(); } 。输出的为何不是5,5,而是5,6,怎么想都不明白!帮帮我,好吗?

2005-03-29 07:21
天使预备役
Rank: 2
等 级:论坛游民
威 望:3
帖 子:670
专家分:10
注 册:2004-4-6
收藏
得分:0 
这应该是strlen()和sizeof()的关于数组尾是否被计算的问题!!!

差点把你忘了...
2005-03-29 09:27
角度
Rank: 1
等 级:新手上路
帖 子:94
专家分:0
注 册:2005-3-16
收藏
得分:0 
隐含一个'\0'在调用函数strlen(s)时不计算在内所以是5了

角度!
2005-03-29 10:10
角度
Rank: 1
等 级:新手上路
帖 子:94
专家分:0
注 册:2005-3-16
收藏
得分:0 
调用sizeof(s)函数时包括在内所以是6了

角度!
2005-03-29 10:12
xiehongyou
Rank: 1
等 级:新手上路
帖 子:84
专家分:0
注 册:2004-8-29
收藏
得分:0 
请问调用sizeof(s)函数时包括在内所以是6了,是谁包括在内????不明白!
2005-03-29 21:50
young
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:223
专家分:160
注 册:2004-9-5
收藏
得分:0 
char s[]="\n123\\";
执行这句时,一般的编译器会自动把字符串结束符号‘\0’放入数组中,所以数组占用6个字节。sizeof就是求字节数的操作运算,所以会得到6
strlen是求字符串长度的函数,它这样判断,当遇到‘\0’时,认为字符串结束,并不把'\0'计算入字符串长度,所以得到5,你自己可以写一个strlen函数试试的。

如果你爱C语言,请你爱指针; 如果你爱指针,请你爱指针的指针;
2005-03-30 09:18
快速回复:一直不解的问题!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.048991 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved