str
初始化为的字符串的大小char str[]="S\032ABCD"
这个空字符对运算符的结果究竟意味着sizeof
什么?
字符串文字的大小是终止 NUL 字节的字符数加 1。在您的情况下sizeof "S\032ABCD"
是 7 (因为 \032 是八进制转义序列并表示单个字符)。由于此文字用作字符数组的数组初始值设定项,sizeof str
因此也是 7。
在 C 中,任何带有前导的数字0
都被视为八进制。因此,032
整体被视为单个字符。所以sizeof
是 7(6 个字符 + 1 个用于 nul 终止)。
如果您只是删除八进制转义符\
,那么您将得到 sizeof 为 8。
sizeof
运算符返回由其类型确定的字节大小 。
不要将其与strlen
以字符为单位测量字符串长度并查找 NUL 终止符的方法混淆。
sizeof
不在乎您的 NULL 终止符,它不会查看您的数组并认为“实际上,这可能是一个字符串,因此我将寻找 NUL 终止符。” 此外,在一般情况下,它不可能像sizeof
编译时那样做到这一点。