- 引入:
特定指针 如:int ,char ,float *
通用指针 如:void*
- NULL:
C:表示一个指针,被宏定义为#define NULL ((void *)0)
,即指向空类型的指针,通用指针可以赋给特定指针,因为在C语言中把空指针赋给int和char指针的时候,发生了隐式类型转换,把void指针转换成了相应类型的指针。
int *pi = NULL;
可以。
C++:表示一个整型值,即0,通用指针不可以赋给特定指针,int *pi = NULL;**加粗样式**
不可以
nullptr相当于c中的NULL的作用。
其实NULL在有些编译器中是赋为0了,这时你不能再去#define
定义它了,否则就重定义了!
- 没有null这个东西
在c和c++中,特定指针可以赋给通用指针,用于临时存储地址,但缺点是:一是因为没有类型,无法确定内存大小,因此无法解引用;二是无法调整权重,所以不能进行算术运算。