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

时间:2012-10-05 21:17:53

标签: c

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

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

sizeof运算符返回以字节为单位的大小,由其类型决定。

这不应与strlen混淆,sizeof测量字符串中的字符串长度并查找NUL终止符。

sizeof不关心你的NULL终结符,它不会查看你的数组并认为“实际上,这可能是一个字符串,因此我将查找NUL终止符。”此外,在一般情况下它不可能这样做,因为{{1}}在编译时完成了它。