void* 指针

void*是一种特殊的指针类型,可用于存放任意对象的地址。一个void*指针存放着一个地址,这一点和其他指针类似。

不同的是,我们对该地址中到底是个什么类型的对象并不了解∶

double obj = 3.14, *pd = &obj;	      // 正确∶ void*
void *pv = &obj;		      // obj可以是任何类型的对象
pv = pd;			      // pv 可以存放任意类型的指针			

利用void*能做的事儿比较有限∶ 拿它和别的指针比较、作为函数的输入或输出,或者赋给另外一个 void*指针。

不能直接操作 void*指针所指的对象,因为我们并不知道这个对象到底是什么类型,也就无法确定能在这个对象上做哪些操作。

概括说来,以void*的视角来看内存空间也就仅仅是内存空间,没办法访问内存空间中所存的对象。

posted @ 2021-01-15 16:33  DearLeslie  阅读(179)  评论(0编辑  收藏  举报