void* 指针是一种特殊的指针类型,可以存放任意对象的地址,一个 void* 指针存放着一个地址,这一点和其他指针类似,不同的是,我们对该地址中到底是个什么类型的对象并不了解

1
2
3
4
double obj = 3.14, *pd = &obj;

void *pv = &obj; // 正确:void* 能存放任意类型对象的地址
pv = pd; // pv 可以存放任意类型的指针

利用 void* 指针能做的事儿比较有限:拿它和别的指针比较、作为函数的输入或输出,或者赋给另外一个void* 指针不能直接操作 void* 指针所指的对象,因为我们并不知道这个对象到底是什么类型,也就无法确定能在这个对象上做哪些操作。

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


本文来自于 C++ Primer