为什么字符串的字节大小比长度长? [关闭]

2024-02-21

为什么会这样sizeof("Bill") is 5 but sizeof(char) is 1?

这不应该使sizeof("Bill") be 4因为字符串的长度是 4 个字符(4 x 1)?

我相信这可能与"Bill"是一个字符数组,但为什么会增加字节大小呢?


C 字符串以 null 结尾。该字符串末尾有一个零字节。假设采用 ASCII,"Bill"在记忆中看起来像这样:

'B'  'i'  'l'  'l'  '\0'
0x42 0x69 0x6c 0x6c 0x00

来自 C 标准,部分6.4.5 字符串文字,第 7 段:

在翻译阶段 7,值为零的字节或代码被附加到由一个或多个字符串文字产生的每个多字节字符序列。

如果您想得到以下答案4对于长度,你应该使用strlen("Bill"), 而不是sizeof.

如果你真的不想要空终止符,那也是可能的,尽管可能是不明智的。这个定义:

char bill[4] = "Bill";

将产生一个 4 字节数组bill仅包含字符'B', 'i', 'l', and 'l',没有空终止符。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么字符串的字节大小比长度长? [关闭] 的相关文章

随机推荐