(void *)p 和(void **)p区别
(void *)p 和(void **)p 地址是一样的,只是指针类型不一样而已
(void *)p //强制转化为 void指针
(void **)p //强制转化为void 二级指针
而*(void **)p 是p指针所指向的值; 只是你把 p 转化为你所符合的指针类型,再取值而已
测试程序
int main(int argc, char* argv[])
{
int a = 10;
int* p = &a;
printf("%p\n", &a);
printf("%p\n", p);
printf("%p\n", (void*)p);
printf("%p\n",(void**)p);
printf("%d\n",*(void**)p);
return 0;
}
运行结果如下