0 vs' \ 0'同时在C中初始化char

时间:2018-03-14 06:00:20

标签: c string

似乎将char初始化为0和' \ 0'在C中生成二进制代码。如果是这样,为什么我们有' \ 0'在C中而不仅仅是0来结束字符串?

3 个答案:

答案 0 :(得分:6)

我唯一能想到的就是可读性,因为'\0'对于那些在这里读取你想要字符的代码的人来说是一个更好的指示。

除此之外,我必须承认它没有任何区别。事实上,对于有经验的C程序员来说,可读性甚至都不是问题。

答案 1 :(得分:4)

是的,初始化单个角色没有区别。但\0的目的是允许您将空字符嵌入到字符串文字中:

"foo\0bar"

就像任何其他转义序列一样。对于单个角色,它与0相同的事实只是一个快乐(设计)的巧合。您正在使用转义序列命名八进制值。

答案 2 :(得分:4)

您可以在字符串文字中使用各种转义序列:

"\n \t \x0a \123"
// symbolic, hex, octal

所有这些也可用于字符文字:

'\n', '\t', '\x0a', '\123'

那么为什么要特别排除'\0'(一个特定的八进制值)呢?为什么它在字符文字中不起作用?

虽然0'\0'之间没有语义差异,但它们可用于表达程序员的意图:0可以是任何整数零,但'\0'是通常只用于NUL字节。