字符串str
的大小初始化为char str[]="S\032ABCD"
这个空字符对sizeof
运算符的结果意味着什么呢?
答案 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}}在编译时完成了它。