这可能是显而易见的,但是一个 void 指针可以安全地指向另一个指针吗?即指向一个类型 int *
int i = 5;
int *ip = &i;
void *vp = &ip;
int *nip = *(int **)vp;
int ni = *nip; // == 5?
编辑:抱歉,我可能没说清楚,我想知道 void 指针是否可以指向具有另一个指针类型的内存部分;而不是一个空**。只是无效 *
最佳答案
是的,您可以将任何对象指针转换为 void *
并返回到原始指针类型,而不会丢失信息。
出自马口:
(C99, 6.3.2.3p1) "A pointer to void may be converted to or from a pointer to any incomplete or object type. A pointer to any incomplete or object type may be converted to a pointer to void and back again; the result shall compare equal to the original pointer."
关于void 指针可以安全地指向另一个指针吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19329437/