指针指向null_C++空指针使用nullptr代替NULL

C/C++中,为了避免野指针(即指针没有指向任何地址)的出现,声明一个指针后,最好马上对其进行初始化。

如果暂时不明确指针指向哪个变量,则可以赋予NULL,如:

int

除了NULL之外,C++11新标准引入了nullptr来表示一个空指针。

nullptr 既不是整型类型,也不是指针类型,nullptr 的类型是 std::nullptr_t,能转换成任意的指针类型。

为什么建议使用nullptr代替NULL呢?

这是因为在C++中,NULL是被定义为0的常量,当遇到函数重载时,就会出现问题。

比如有下面两个函数时:

  • void foo(int n)
  • void foo(char* s)

函数重载:C++允许在同一作用域中声明多个类似的同名函数,这些同名函数的形参列表(参数个数,类型,顺序)必须不同。

#include 

编译上述代码,结果如下图所示,编译器提示有两个函数都可能匹配,产生二义性。

6bc779e0e40770614cf7dca5e98043c7.png


而用nullptr,编译器则会选择 foo(char* s)的函数,因为nullptr不是整数类型。

#include 

运行结果如下图所示:

5d810517825285286808dd52377b3af4.png

因此,当想使用空指针时,优先使用nullptr,而非NULL。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值