我以前在C语言课程中没有看到void **。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);
是(无效**)的类型转换?最后两行输出相同的结果。
我以前在C语言课程中没有看到void **。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**)
是演员。它将投影&dev_c
地址(其类型指针指向指向int
的指针),使其成为指向void
的指针。
这是一个指向void类型指针的指针。该行正在投射对该类型的引用。
void**
是指针pointer.In您例如为指针,以便该&dev_c
的地址将是一个指针的指针,这是类型强制转换为void**
。
(void **)
是一种类型强制转换以指示指向指针的指针。
在你的printf代码中,它什么都不做。
(void **)&dev_c ==(void *)dev_c? – John
@John:不,'(void **)&dev_c'是堆栈中'dev_c'变量的*地址*。 '(void *)dev_c'是存储在'dev_c'变量中的*值*。 –