C语言字符串的长度和大小的几个问题
为什么len1长度是11,len4长度是7这个是ch4少一个斜杠,ch4里也是\0看作一个字符吗?还是最后面没有自动加\0...
为什么len1长度是11,len4长度是7
这个是ch4少一个斜杠,ch4里也是\0看作一个字符吗?还是最后面没有自动加\0 展开
这个是ch4少一个斜杠,ch4里也是\0看作一个字符吗?还是最后面没有自动加\0 展开
5个回答
展开全部
一、he\\0llo 这里斜杠被转义了,就一个斜杠,0还是字符0 所以,len4长度是7
二、he\0llo 这里\0是一个字符:字符串结束符!
三、len1是11是巧合,原因是你按字符对数组进行初始化,又没有定义数组长度,所以ch1只有五个字符,而strlen()求串长,是要找到一个\0才结束的!所以,strlen(ch1)结果是不确定的!
二、he\0llo 这里\0是一个字符:字符串结束符!
三、len1是11是巧合,原因是你按字符对数组进行初始化,又没有定义数组长度,所以ch1只有五个字符,而strlen()求串长,是要找到一个\0才结束的!所以,strlen(ch1)结果是不确定的!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
关于char4第一项,因为\是一个转义字符,所有他不会被统计,而经过\转移之后,第二个\就是一个斜杠的字符了,所以第一个为7个,而第二个因为你把一个斜杠去掉之后,只有一个转义字符\ 然后加上一个0就等于字符串的结束符号\0 ,所以第二次的长度是2 关于char1 你最好把这个字符串输出来printf(“%s\n”, ch1),看看他到底是什么
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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来测量字符串长度的用法也是错误的。
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来测量字符串长度的用法也是错误的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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.
char ch1[]={'h','e','l','l','o'}这种没用结束符\0的strlen长度不定,肯定不是5,
sizeof 是根据实际有多个字符,即占用多少空间算"hello"结尾\0也算进去故为6,所有size2,size3都为6.
这个是ch4少一个斜杠,ch4里也是\0看作一个字符吗?还是最后面没有自动加\0
---这个\0是算个字符,结尾的那个也算故第一个size4为8.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询