2013-08-07 238 views
1

我以前在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); 

(无效**)的类型转换?最后两行输出相同的结果。

回答

2

(void**)是演员。它将投影&dev_c地址(其类型指针指向指向int的指针),使其成为指向void的指针。

+0

(void **)&dev_c ==(void *)dev_c? – John

+0

@John:不,'(void **)&dev_c'是堆栈中'dev_c'变量的*地址*。 '(void *)dev_c'是存储在'dev_c'变量中的*值*。 –

1

这是一个指向void类型指针的指针。该行正在投射对该类型的引用。

1

void**是指针pointer.In您例如​​为指针,以便该&dev_c的地址将是一个指针的指针,这是类型强制转换为void**

0

(void **)是一种类型强制转换以指示指向指针的指针。

在你的printf代码中,它什么都不做。