小写 null 在 C++ 中是否有效

Is lowercase null valid in C++?

本文关键字:是否 有效 C++ null 小写      更新时间:2023-10-16
在任何

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

背景:

在一次采访中,有人问我"以下哪个指针初始化是有效的?",我填写了这样的表格:

// 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;

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

不。

一个词的答案是否定的。

尝试以下代码

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

这在编译时给出了以下错误:

错误:未在此范围内声明"null">

这是不言自明的。

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

-> #define 空 0

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

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