C++中的空指针表示法
发布时间
阅读量:
阅读量
在编写C语言程序时通常会遇到null指针现象,在C++编程中同样地,在C++编程中提供了null和nullptr两种关键字。实际上,null pointer常量是自C++11版本起新增的重要特性。为了澄清这一问题的本质,在查阅相关资料的过程中进一步了解了这一特性的发展背景及其重要性。
一、C程序中的NULL
在C语言中,NULL通常被定义为:
#define NULL ((void *)0)
所以 NULL 实际上是一个空指针的情况,在 C 语言中编写如下的代码是不会报错的,在这种情况下将一个空指针赋值给 int 或 char 类型的指针时会触发隐式类型转换
int *pi = NULL;
char *pc = NULL;
二、C++程序中的NULL
然而问题出现了:这段代码若采用C++编译器将无法通过。原因在于C++是一种强类型语言,在这种情况下无法将void*隐式转换为其他类型的指针。因此实际上编译器提供的头文件进行了必要的处理以解决这一冲突。
#ifdef __cplusplus
#define NULL 0
#else
#define NULL ((void *)0)
#endif
在C++中, NULL被定义为0
全部评论 (0)
还没有任何评论哟~
