个人主页:Jason_from_China-CSDN博客
所属栏目:C++系统性学习_Jason_from_China的博客-CSDN博客
概念概述:
在C++中,
nullptr
和NULL
都是用来表示空指针,但它们之间有一些重要的区别:
nullptr和NULL之间的区分
nullptr
:
nullptr
是C++11标准引入的一个关键字,用于表示空指针。- 它是类型安全的,意味着它必须被转换为一个指针类型才能使用,这可以防止一些类型错误。
nullptr
可以被隐式转换为任何指针类型,包括对象指针、函数指针、成员指针等。- 使用
nullptr
可以提高代码的可读性和可维护性。
NULL
:
NULL
是一个宏,通常在<cstddef>
或<cstdlib>
头文件中定义为0
或(void*)0
。- 它不是类型安全的,因为它本质上是一个整数常量,可以被赋值给任何指针类型,这可能导致类型错误。
NULL
可以被隐式转换为任何指针类型,但这种隐式转换可能会隐藏类型错误。最本质的区别就是:所以为了解决C++引入了新的关键字,nullptr(这里是不能转化成整形的)
nullptr的使用
#include<iostream> //nullptr(空指针)(不能转化为整形)和null(可以转化为整形) void _null(int x) { cout << "_null(int x)=" << x << endl; } void _nullptr(int* x) { cout << "_nullptr(int x)=" << x << endl << endl; } int main() { //nullptr(空指针)(不能转化为整形)和null(可以转化为整形) //int a1 = nullptr; cout << "nullptr(空指针)(不能转化为整形)和null:" << endl; _null(NULL); _nullptr(nullptr); return 0; }