我之前在 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 示例代码中,它什么也不做。