【C++初阶】:指针空值nullptr

指针空值nullptr

一.空指针

在良好的C/C++编程习惯中,声明一个变量时最好给该变量一个合适的初始值,否则可能会出现不可预料的错误,比如未初始化的指针。如果一个指针没有合法的指向,我们基本都是按照如下方对其进行初始化:

在这里插入图片描述

NULL实际是一个宏,在传统的C头文件(stddef.h)中,可以看到如下代码:

在这里插入图片描述

所以如果是这样的话NULL直接就变为了一个数字0而不是空指针,那么就有可能引起下面的麻烦。

在这里插入图片描述

在这里插入图片描述

这里根据函数重载(如果不了解的可以看看这篇博客函数重载),第一个和第二个函数是两个不同的函数,如果我们传NULL本意是传一个空指针调用第二个函数,但实际上在被宏替换后NULL直接变味了0,也就是调用了第一个函数,这与我们的预期不符,所以为了解决这一问题,c++开发了另一种空指针nullptr。

二.空指针nullptr

在C++98中,字面常量0既可以是一个整形数字,也可以是无类型的指针(void * )常量,但是编译器默认情况下将其看成是一个整形常量,如果要将其按照指针方式来使用,必须对其进行强转(void * )0。

所以nullptr其实可以理解为(void * )0,但需要注意nullptr的类型是空指针并不是某一种类型的指针,可以看下面的例子

在这里插入图片描述

在这里插入图片描述

所以nullptr实际上与(void * ) 0,任然是有区别的。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_73790767/article/details/130285599