小写 null 在 C++ 中是否有效
Is lowercase null valid in C++?
在任何
版本的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,可以通过定义新宏或在头文件中的预定义宏中收费来实现。 但在进行这些更改之前要小心。
相关文章:
- 如果变量名称不跟在 char* 后面,const char* 是否有效?
- 钳制迭代器是否有效
- 检查由括号、方括号和大括号组成的一组方括号是否有效?
- 在函数内创建的对象的范围 - 如果在函数外部存储和访问引用,它们是否有效?
- 模板签名解析为 void(void) 被 GCC 拒绝;这是否有效C++?
- 我如何知道作为参数的size_t在函数中是否有效?
- 我的运算符重载是否有效<<(流插入)左操作数不是 ostream
- C++ 返回指向函数内定义的静态数组的指针是否有效?
- 此递归模板类型定义是否有效C++?
- 将 C 函数转换为 C++ 以检查数字是否有效
- 函数参数的名称与调用函数时使用的变量相同是否有效?
- 如何检查输入是否有效?
- 如何检查用户的输入是否有效以及我正在寻找的数字?
- 在函数中按值传递 unordered_map/unordered_set 是否有效? C++
- 如何检查isupper(cstr)是否有效?
- 将 std::transform 与 std::back_inserter 一起使用是否有效?
- 只需要知道我在c ++中打印模式的方式是否有效,或者有另一种方法可以有效地做到这一点
- 如何检查字符串格式在读取C++文本文件时是否有效?
- 在 c++ 中将对象设置为等于同一类的构造函数是否有效?
- 创建加密安全密码.并验证它是否有效