语法:c++对关于空指针0/NULL/nullptr三者的演变
来源:互联网 发布:城市轨道交通系统知乎 编辑:程序博客网 时间:2024/06/07 14:32
字面意义上的解释:
- 0:整型常量
- NULL:预处理符号
- nullptr:空指针类型常量
其中前两者在C中出现,最后一个在C++11中出现。我们平常会使用这三个符号来表示空指针,但是他们之间还是有许多差别。
NULL 声明在cstdlib中:
#ifdef __cplusplus #define NULL 0 #else= #define NULL ((void *)0) #endif
发现在C中NULL的类型为void *,是因为C中允许NULL进行隐式转换,但是C++中不允许隐式转换,但是为了兼容C,在C++中制定一个指针为NULL的时候,实际上是将其赋值为0。
C++支持者对C中保留的宏定义极力排除,主张在程序中尽量避免使用宏(毕竟宏可以通过const和inline内联实现更好的效果),所以C++中引入了nullptr,它是一个常量,类型为std::nullptr_t,可以转换为任意的指针类型。C++中的void*不可以转化为任意的类型,因为如果支持,在下面情况中会出现不知道调用哪个函数:
void fun(int i){cout<<"1";};void fun(char *p){cout<<"2";};int main(){fun(NULL); //输出1,c++中NULL为整数0fun(nullptr);//输出2,nullptr 为空指针常量。是指针类型}
转自:nullptr
阅读全文
0 0
- 语法:c++对关于空指针0/NULL/nullptr三者的演变
- 关于c++空指针0/NULL/nullptr三者的演变
- C++ NULL、0、nullptr -- 用于表示空指针
- NULL、0、nullptr (C++)
- C++的零指针(NULL,0,nullptr)
- 空指针NULL 和 What exactly is nullptr?
- c++指针中0,NULL和nullptr
- NULL、0、nullptr的区别
- NULL、0、nullptr的区别?
- 空指针nullptr
- C 空指针(NULL)与0的区别
- C语言中的空指针、空指针常量、NULL & 0
- C语言中的空指针、空指针常量、NULL & 0
- C语言中的空指针、空指针常量、NULL & 0
- C语言中的空指针、空指针常量、NULL & 0
- C语言中的空指针、空指针常量、NULL & 0
- C语言中的空指针、空指针常量、NULL & 0
- C ++中的NULL与nullptr的区别
- day42-43 (8.30~31)两天购物商城的【商品模块收获总结】
- Android Studio将Module打成Ja包的那些坑
- 面试OR笔试23——数组和
- jquery实现ajax无刷新效果
- NLP深度学习 —— CS 224学习笔记 11
- 语法:c++对关于空指针0/NULL/nullptr三者的演变
- 暴力搜索
- h5+正方体3D旋转+2个园互相转圈+下拉栏+来回忽闪+html旋转动画+补间动画+双飞翼布局+对话框那个三角
- 【PYthon报错】np.complex128数字的虚数部分为0j
- Android讲义3---第四章---Fragment详解
- 欢迎使用CSDN-markdown编辑器
- ASP.NET Web API使用示例
- 洛谷【p1149】火柴棒等式(完全递归)
- Single Number c++