我们在使用指针的时候,要尽量避免野指针的存在,即定义了就要初始化,如果暂时不知道具体指向哪块空间,那么可以初始化为空,我们有两种方式 1. NULL
和
nullptr (C++11
新标准引入的
)。
//C
int *p = NULL;
//C++
int *p = nullptr;
在
C++
中
NULL
被如下定义:
#ifndef NULL
#ifdef __cplusplus
#define NULL 0
我们看到
NULL
它是一个宏,在
C++
中被明确定义为整数
0
,这就导致了整型与指针的混用,
nullptr
的出现解决了这个问题,它明确了自己的含义,空指针。
nullptr C++11
新标准引入的一个关键字,代表是空指针,如果出现了多个类型的空指针,仍然会语义不明确,则需要使用强转来明确空指针的类型。
C++中 NULL 和 nullptr 的区别:
1. NULL
是宏 替换的是
0
,
nullptr 是关键字。
2.
含义不同,
nullptr
代表是空指针,
NULL
代表整型数字。