C语言字符串的长度和大小的几个问题

为什么len1长度是11,len4长度是7这个是ch4少一个斜杠,ch4里也是\0看作一个字符吗?还是最后面没有自动加\0... 为什么len1长度是11,len4长度是7

这个是ch4少一个斜杠,ch4里也是\0看作一个字符吗?还是最后面没有自动加\0
展开
 我来答
albumin
2014-12-21 · TA获得超过1.2万个赞
知道大有可为答主
回答量:4889
采纳率:87%
帮助的人:2411万
展开全部
字符串以'\0'表示结束,"he\0llo" \0字符中就结束了,长度为2
"he\\0llo" ,双引号字符串自动加上'\0'结束符,\\表示'\'字符共有'h' ,'e','\','0','l','l' ,'o'七个字符,长度为7
ch1[]={'h','e','l','l','o'} 不会自动加上'\0',测试长度时直到遇到内存中第一个’\0'结束,长度不固定,如果重新编译程序运行长度就不一定是11
kaixingui2012
2014-12-21 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6505万
展开全部
一、he\\0llo 这里斜杠被转义了,就一个斜杠,0还是字符0 所以,len4长度是7
二、he\0llo 这里\0是一个字符:字符串结束符!
三、len1是11是巧合,原因是你按字符对数组进行初始化,又没有定义数组长度,所以ch1只有五个字符,而strlen()求串长,是要找到一个\0才结束的!所以,strlen(ch1)结果是不确定的!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gao9262951
2014-12-21 · TA获得超过128个赞
知道答主
回答量:89
采纳率:0%
帮助的人:47.9万
展开全部
关于char4第一项,因为\是一个转义字符,所有他不会被统计,而经过\转移之后,第二个\就是一个斜杠的字符了,所以第一个为7个,而第二个因为你把一个斜杠去掉之后,只有一个转义字符\ 然后加上一个0就等于字符串的结束符号\0 ,所以第二次的长度是2 关于char1 你最好把这个字符串输出来printf(“%s\n”, ch1),看看他到底是什么
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
White_MouseYBZ
2014-12-21 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6715万
展开全部
len1长度是不确定的,什么时候碰到'\0'才算结束。因为ch1[]不是字符串而是字符数组,而strlen是测字符串长度的,这里用法就错了。
len4是ch4[]的长度,dh4[]的内容被编译器解释为h、e、\、0、l、l、o、'\0',其中\是转义字符,所以\\才被解释为1个\。最后长度自然是7。例2中\0字符串就结束了,所以是2。系统不会把'\0'加到\0后面而是自动加到o后面。
sizdof不是函数,是操作符,用来计算系统为变量分配了多少个字节。比如有char a[100]="";,用strlen(a)测得是0,而用sizdof(a)计算结果是100,因为编译器为a分配了100个字节。所以,用sizeof来测量字符串长度的用法也是错误的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
白眉鹰王天鹰教
2014-12-21 · 超过61用户采纳过TA的回答
知道小有建树答主
回答量:126
采纳率:0%
帮助的人:48.9万
展开全部
strlen是根据字符串结束标志\0判断长度的不算结尾\0如果中间有\0则就算到第一个\0处(len3,len4属于这种情况)的长度后面不算,如果像数组这种没用\0结束的那么长度应该是不确定的,会从开始算一直找到\0为止(后面就不是当前字符数组的内容len1就是这种情况),像“hello"这种字符默认结尾是有个\0的。
char ch1[]={'h','e','l','l','o'}这种没用结束符\0的strlen长度不定,肯定不是5,
sizeof 是根据实际有多个字符,即占用多少空间算"hello"结尾\0也算进去故为6,所有size2,size3都为6.

这个是ch4少一个斜杠,ch4里也是\0看作一个字符吗?还是最后面没有自动加\0
---这个\0是算个字符,结尾的那个也算故第一个size4为8.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式