欢迎关注笔者,你的支持是持续更博的最大动力
void指针
void * p;
可以用任何类型的指针对void指针进行赋值或初始化;
举例
double d = 1.54;
void * p = &d; //double * 类型指针初始化void指针 &d:double * 类型指针 (&:取地址运算符,&d:d的地址)
void * p1;
p1 = &d; //double * 类型指针赋值给void指针
void指针的区别
因为sizeof(void) 没有定义,所以对于void*类型的指针p:
- *p无定义
- ++p, --p, p+=n, p+n, p-n等均无定义
为什么?
如果 int * p:
p是 int * 类型指针, *p是int类型的变量,4字节。
如果void * p:
p是void * 类型指针,*p是? 大小?
这就不知道void * p中的p指向的是什么类型的变量,所以*p没有定义。
如果*p没有定义,那么++p也没有定义:
++p = p初始地址 + 1 × \times