空终止字符串:使用 '' 还是只使用 0?

Null-terminate string: Use '' or just 0?

本文关键字:终止 字符串 使用      更新时间:2023-10-16

如果我需要空终止字符串,我应该使用还是一个简单的0也足够了?

使用之间有什么区别吗

char a[5];
a[0] = 0;

char a[5];
a[0] = '';

还是只是更愿意明确我在这里以 null 结尾,但对于编译器来说是一样的?

''是值为 0 的八进制文本的转义序列。 所以它们之间没有区别

旁注:如果您正在处理字符串,则应使用std::string

使用"\0"还是仅使用 0?

价值没有区别。
在 C 中,类型没有区别:两者都是int .
在C++它们有不同的类型: charint . 因此,边缘转到'',因为不涉及类型转换。

不同的风格指南相互推广。 ''清楚起见。 0因为缺乏混乱。

正确答案:根据组的编码标准/指南使用样式。 如果您的组没有此类指南,请制定一个。 最好使用一个而不是有不同的样式。

尽管类型相同,'' 0完全相同。 ''只是作为char文字的表示。不过,类型 char 可以从纯文本int文本初始化。

因此,实际上不可能说出哪个更好,只要记住在代码中一致地使用它。

两者都会生成相同的机器码,因为0将转换为字符值0,而''只是另一种编写字符值0的方法。后者明明是一个角色,所以会说明你不是无意写'0',但除此之外,最后是一回事。

这是一回事。查看 ascii 表。

从我的角度来看,最好使用"\0",因为您明确表示字符串的结尾。

这在读取代码时会有所帮助(例如使用 NULL 表示指针而不是 0)。