不久前在看书时看到void 指针,觉得很不认识,所以找了点资料,记录如下:
void指针即空指针,如void *vp; 根据vp只能够知道一个地址,但不能够判断出它指向对象长度。
(1):任何指针都可以赋值给void指针;
void *vp;
type *p;
vp = p; //不需转换,只获得变量/对象地址而不是获得大小。
(2):void指针赋值给其他类型的指针时都要进行转换;
type *p = (type *)vp; //转换类型也就是获得指向变量/对象大小。
(3):void 指针不能复引用;
*vp; //错误,因为void指针只知道指向变量/对象的起始地址,而不知道变量
大小,故不能正常引用。
(4):void指针不能参与指针运算,除非进行转换。
(type *)vp ++; //vp == vp + sizeof(type);