我试图理解C depplier并且在我的一个nirvanenses中,冥想得到了这个问题"如何解除引用指向另一种指针的空指针"我想它可以变得更清晰使用下一个代码:
int a,b,*p1,*p2;
void *p;
a=3;
b=6
p1=&a;
p2=&b
p=&p1;
*p=p2 //How I could be able to do this?
所以在上面的代码中,我希望p1指向与使用p2作为中间p的相同值。我知道做p1 = p2会更好但我想知道我上面写的是否可能
答案 0 :(得分:2)
void *
指针不得取消引用。如果您不想取消引用它们,它们只能用作中间指针存储。 (想想malloc
。)
在取消引用void *
指针之前,必须将其转换为非void
类型,以便
*((int * *) p) = p2;
会在你的例子中起作用。当然,你必须确保演员表是有意义的或任意不好的事情可能发生。编译器无法在这里为您提供帮助。