13

只需阅读 Kenneth Reek 的 C 书指针。它说一个 NUL 字节是一个位全为 0 的字节,这样写'\0',NULL 的值为 0,它指的是一个值为 0 的指针。

两者都是整数并且具有相同的值,因此它们可以互换使用。

这段代码也:

char const *keyword[] = { "do", "for", "if", "register", 
                              "return", "switch", "while", NULL };

在此代码中,NULL 让搜索表的函数检测到表的结尾。那么,我们可以互换 NULL 和 NUL 宏吗?

4

2 回答 2

17

NUL是 ASCII 字符代码 0 的表示法。

NULLstddef为空指针定义的宏。

所以,,它们不能互换使用。

于 2013-03-18T14:34:20.017 回答
14

没有标准化NUL的宏,至少在 C 中没有。

此外,NULL与普通文字相比,它的优势0在于它向读者发出信号“嘿,我们正在处理一个指针”,这可能被认为是一个优势。

在 C++ 中,这个习语很长一段时间只是 write 0,但后来他们似乎已经扭转了这一点,并nullptr出于某种原因引入了一个新的文字。

NULL在 C 中,我建议为指针和'\0'字符编写。

于 2013-03-18T14:34:20.347 回答