| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5468 人关注过本帖
标题:字符串常量算字节与strlen求长度的区别?
只看楼主 加入收藏
奋斗青春
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2010-8-19
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:4 
字符串常量算字节与strlen求长度的区别?
        我们知道一个字符串常量在算所占内存的字节数时往往是等于字符串字符的个数再加1.因为尾部放‘\0’,表示结束。而在用strlen函数时末尾的‘\0’却不算,这是怎么回事?难道这两者表示的意义不一样么?也就是字节数与求长度不是一个意思吗?请帮我解答一下
搜索更多相关主题的帖子: 常量 strlen 字节 字符 长度 
2010-08-19 09:50
do8do8do8
Rank: 10Rank: 10Rank: 10
来 自:沙滩
等 级:贵宾
威 望:17
帖 子:366
专家分:1845
注 册:2010-7-2
收藏
得分:8 
strlen是以'\0'做为一个结束标记。strlen会计算'\0'前面的字节。
如:
  char b[2];
  b[0]='f';
  printf("%d",strlen(b));
结果是多少? 是2? 是1? 绝不,答案是无法预知的,因为你不知道b[0]后面在哪个地方strlen放了'\0'.
所以'\0',是strlen个人需求的,你还是帮忙把'\0'放到适当的位置,要不你就等着瞧吧。

啊死卡玛 里面1个字符需要8位来表示 也就是一个字节 要求长度按字面来说是求字符数, 由此而知也是求字节数

[ 本帖最后由 do8do8do8 于 2010-8-19 10:05 编辑 ]

学C语言从底层开始,学编程从问题开始,一日学会C!!!
2010-08-19 10:00
lintaoyn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:606
专家分:2499
注 册:2009-4-8
收藏
得分:7 
“123”这个字符串什么看长度都是3,你要是把'\0'也算进去不是有些不太直观?
再看看这个for(int i = 0; i < strlen(s); ++i);要是把'\0'算进去,嗯,多少有些别扭。

迭代的是人,递归的是神。
2010-08-19 10:09
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
收藏
得分:5 
回复 楼主 奋斗青春
'\0'也叫空操作字符 我们可以不把他当成一个真正的字符,只是一个标记,但是这个标记要占内存,然而,strlen只关心我们能看到的字符的个数,我们能看到的当然是前面不包含'\0'的多个符号了!

Coding就像一盒巧克力,你永远不会知道你会遇到什么BUG
别跟我说你是不能的,这让我愤怒,因为这侮辱了你的智慧
2010-08-19 10:09
奋斗青春
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2010-8-19
收藏
得分:0 
回复 楼主 奋斗青春
       谢谢哦!听你这么一说倒也明白了
2010-08-19 10:12
快速回复:字符串常量算字节与strlen求长度的区别?
数据加载中...
 
   



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

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