我以前在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'變量中的*值*。 –