\0代表什么?

26

1
\O\0,是指空 ASCII 值为 0,那应该用 0 还是 Zero - Grijesh Chauhan
1
谷歌上有600万个结果,只有\0 - Eregrith
7个回答

29

空字符'\0'(也称为null终止符),简称NUL,是一个控制字符,其值为。在Cobjective C中相同。

该字符在C语言中具有更重要的意义,并用作保留字符,用于表示字符串的结尾,通常称为空终止字符串

通过查找(第一个)NUL字节来找到包含字符并以'\0'字符结尾的数组的长度,这个数组就是C字符串


11

在C语言中,\0表示值为零的字符。以下两个表达式等价:

char a = 0;
char b = '\0';

这个转义序列在字符串字面值中更有用,因为它们是字符数组:

char arr[] = "abc\0def\0ghi\0";

(请注意,该数组在末尾有两个零字符,因为字符串常量包含一个隐藏的、隐式的终端零。)


6

字符字面值和字符串字面值中的'\0'表示代码为零的字符。在C语言和Objective-C中,这个意义是相同的。

举例来说,在数组初始化器中使用\0可以构建一个等效于空终止字符串的数组:

char str1[] = "Hello";
char str2[] = {'H', 'e', 'l', 'l', 'o', '\0'};

一般情况下,您可以使用\ooo来代表一个ASCII字符,这是使用八进制记数法,其中o代表最多三个八进制数字。

... 或者使用十六进制的 '\xXY'。不过我不确定这怎么能算是对 '\0' 的“概括”,因为它们代表着不同的概念。 - unwind
@unwind \0 在八进制表示中代表零。微软关于转义字符的页面(http://msdn.microsoft.com/en-us/library/h21280bw%28v=vs.80%29.aspx)没有特别说明`\0`,而是将其与其他八进制字符字面量一起“捆绑”了。 - Sergey Kalinichenko
1
@unwind: 注意,0是一个八进制整数常量,是一般情况下可以写作0[0-7]*的八进制整数常量的特例。虽然 0是否正式定义为八进制或十进制常量并不会有任何区别,但语法将其归类为八进制,就像\0转义字符一样 :-) - Steve Jessop

6
对于C语言而言,'\0' 和整型常量 0意义完全相同(值相同,类型为int)。
对于阅读代码的人来说,写 '\0'表明你计划将这个零用作字符。

3

\0 是零字符。在 C 中,它通常用于表示字符串的终止。当然,它也是一个普通字符,可以像其他字符一样使用,但这种情况很少发生。

C 中内置的字符串操作函数的简单版本要求您的字符串以空字符结尾(或以 \0 结尾)。


在Objective C中,如果要将其添加到字符串中,我应该怎么做? - Saurabh Jadhav
@SaurabhJadhav 看起来 Objective-C 中的用法类似于 C。 还可以在这里看看 链接 - Ivaylo Strandjev
我已经查看了你给我的链接,但我想要另一种方式,例如在Objective-C中:NSString * str = @"A\0B\0C"; 所以我希望输出为 A B C,即我想要从字符串中转义掉 \0。 - Saurabh Jadhav
如果你想要这样的输出,你需要用空格字符替换'\0'。我相信你可以使用单次迭代来完成这个操作(我不确定Objective-C中是否有内置函数可以实现)。 - Ivaylo Strandjev

0
在 C 中,\0 是一个字符字面常量,存储到一个 int 数据类型中,表示值为 0 的字符。
由于 Objective-C 是 C 的严格超集,因此该常量被保留。

C语言没有规定char类型的位数。 - Kerrek SB
是的,你说得对。修复答案。 - Jack
@KerrekSB <limits.h> 中的 CHAR_BIT 怎么样?但这和问题有什么关系吗?我错过了回答中的编辑吗? - Alexey Frunze
CHAR_BIT 告诉你这个特定编译器实现了什么。C 标准并没有对这个值说太多 - 在 CHAR_BIT 中它可以是 8、9、11 或 32。 - Mats Petersson

-4

在C语言中,'\0'表示NULL字符,至于Objective-C是否相同就不得而知了。


5
NULL 是一个指针,\0 则是一个字符。 - Kerrek SB
1
@KerrekSB,NULL 可以被定义为简单的 0(C99 明确允许),在这种情况下,与 '\0' 没有区别。 - Alexey Frunze
2
一行代码的空字符终止字符串,两行代码的空字符表示没有任何内容。 - jscs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接