2013-08-07 294 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代碼中,它什麼都不做。