2

str初始化为的字符串的大小char str[]="S\032ABCD"

这个空字符对运算符的结果究竟意味着sizeof什么?

4

3 回答 3

2

字符串文字的大小是终止 NUL 字节的字符数加 1。在您的情况下sizeof "S\032ABCD"是 7 (因为 \032 是八进制转义序列并表示单个字符)。由于此文字用作字符数组的数组初始值设定项,sizeof str因此也是 7。

于 2012-10-05T21:28:38.663 回答
1

在 C 中,任何带有前导的数字0都被视为八进制。因此,032整体被视为单个字符。所以sizeof是 7(6 个字符 + 1 个用于 nul 终止)。

如果您只是删除八进制转义符\,那么您将得到 sizeof 为 8。

于 2012-10-05T21:30:50.767 回答
0

sizeof运算符返回由其类型确定的字节大小 。

不要将其与strlen以字符为单位测量字符串长度并查找 NUL 终止符的方法混淆。

sizeof不在乎您的 NULL 终止符,它不会查看您的数组并认为“实际上,这可能是一个字符串,因此我将寻找 NUL 终止符。” 此外,在一般情况下,它不可能像sizeof编译时那样做到这一点。

于 2012-10-05T21:22:51.817 回答