void指针可以安全地指向另一个指针吗?

jay*_*jay 2 c pointers void

这可能很明显但是,void指针可以安全地指向另一个指针吗?即指向int类型*

int i = 5;
int *ip = &i;
void *vp = &ip;

int *nip = *(int **)vp;
int ni = *nip; // == 5?
Run Code Online (Sandbox Code Playgroud)

编辑:对不起也许我不清楚,我想知道一个void指针是否可以指向一个具有另一个指针类型的内存部分; 没有空虚**.只是无效*

oua*_*uah 6

是的,您可以将任何对象指针转换void *为原始指针类型而不会丢失信息.

从马的嘴里:

(C99,6.3.2.3p1)"指向void的指针可以转换为指向任何不完整或对象类型的指针.指向任何不完整或对象类型的指针可以转换为指向void的指针,然后再返回;结果应比较等于原始指针."

  • @jayjay`void*`可以指向任何对象:所以`int`或`int*`甚至是`int**`. (2认同)