*void p 通用指针 or 泛指针
通常指针有两个属性:指向变量/对象的地址和类型,指针的值存储了所指向变量/对象的地址,类型决定了变量/对象所占内存的长度。
void *p 称为通用指针 或 泛指针,它在定义时,没有指定类型。可以使用void指针来代替其他类型指针,或者使用其他类型指针代替void指针。
例:
int a = 1;
char b = 'A';
void *ptr = NULL;
ptr = &a; //用void指针指向int型的地址
ptr = &b; //用void指针指向char型的地址
由于void指针没有指定所指向变量/对象 的数据类型,需要使用正确的类型进行前置转换才能对所指向数据进行街引用。
例:
//void型指针解引用须做类型指定
*(int *)ptr = 10;
此外,由于不知道void指针的类型,除非对void指针进行强制类型转换,否则不能参与指针运算,如无法对其进行自增操作(ptr++),编译器不知道void指针需要增加多少。