我之前在 C 语言课程中没有看到过 void **。
int *dev_c;
dev_c = &val;
printf("%p\n",dev_c); // val address
printf("%p\n",&dev_c); // get the address of dev_c
printf("%p\n",(void **)&dev_c);
(void **)是类型转换器吗?最后两行输出相同的结果。
我之前在 C 语言课程中没有看到过 void **。
int *dev_c;
dev_c = &val;
printf("%p\n",dev_c); // val address
printf("%p\n",&dev_c); // get the address of dev_c
printf("%p\n",(void **)&dev_c);
(void **)是类型转换器吗?最后两行输出相同的结果。
(void**)是一个演员表。它正在转换&dev_c地址(它具有指向指针的类型指针int),使其成为指向指针的指针void。
void**是指向指针的指针。在您的示例dev_c中是指针,因此 this 的地址&dev_c将是指向指针的指针,并且 this 被类型转换为void**.
它是一个指向 void 类型指针的指针。该行正在转换对该类型的引用。
(void **)是一种类型转换,用于指示指向指针的指针。
在您的 printf 示例代码中,它什么也不做。