为什么sizeof("Bill")
是5
但sizeof(char)
是1
?
不应该使sizeof("Bill")
为4
因为字符串的长度是4个字符( 4 x 1
)?
我相信它可能与"Bill"
是一个字符数组有关,但为什么会增加字节大小?
C字符串以空值终止。 该字符串末尾有一个零字节。 假设ASCII, "Bill"
在内存中看起来像这样:
'B' 'i' 'l' 'l' ' ' 0x42 0x69 0x6c 0x6c 0x00
从C标准,第6.4.5节字符串文字 ,第7段:
在转换阶段7中,将值0的字节或代码附加到由字符串文字或文字产生的每个多字节字符序列。
如果你想得到长度为4
的答案,你应该使用strlen("Bill")
,而不是sizeof
。
如果你真的不想要null终结符,那也是可能的,尽管可能是不明智的。 这个定义:
char bill[4] = "Bill";
将产生一个4字节的数组, bill
包含字符'B'
, 'i'
, 'l'
和'l'
,没有空终止符。
它有一个0作为终止符,所以它的B ill 0
以上就是c/c++开发分享为什么字符串的字节大小比长度长?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/545994.html