小写 null 在 C++ 中有效吗?

Is lowercase null valid in C++?

在任何版本的 C++ 语言规范中是否有小写 null

背景:

我在面试中被问到 "Which of the following pointer initializations are valid?",我填写了如下表格:

// valid
    int* p1 = 0;
    int* p2 = 2-2;
    int* p6 = new int;
// invalid
    int* p3 = 1; 

    int z = 0;
    int* p4 = z;
// ???
    int* p5 = null;

Is there any lowercase null in any version of the C++ language specification?

没有

一个词的答案是否定的。

试试下面的代码

  #include <iostream>
#include <stdlib.h>
using namespace std;
int main(){
    int *p = null;
    int *q = NULL;
    return 0;
}

编译时出现以下错误:

错误:“null”未在此范围内声明

这是不言自明的。

答案写在一些头文件中。 NULL是那些头文件中预定义的宏如**

-> #define NULL 0

**。因此我们只能用大写的"NULL"来定义以避免编译终止。

但是,如果您希望小写null,您可以通过定义新的宏或在头文件中的预定义宏中收费来实现。但在进行这些更改之前要小心。