2012-12-29 151 views
1

可能重複:
Dereferencing void pointers空指針引用

我有一個函數調用這種方式:

void foo(void *context) //function prototype 
.. 
.. 
.. 
main() 
{ 
. 
. 
foo(&(ptr->block)); //where ptr->block is of type integer. 
. 
. 
. 
void foo(void *context) 
{ 
Here I try to use the ptr->block but am having problems. I have tried 

if((int *)context ==1) 
    .. 
    .. 
} 

我類型轉換它放回功能的int用它。我是否在foo()函數內解引用它錯誤?

回答

5
if((int *)context ==1) 

你想這個代替:

if(*(int *)context ==1) 

你被強制轉換爲指針int,但你真正想要的是實際訪問int所以你需要取消引用指針。

+0

真棒!感謝:-) – mane

3

您沒有將其轉換爲int,您將它轉換爲int *,然後不對其進行解引用。嘗試:

if (*(int *)context == 1) 
+0

感謝您的即時回覆!所以人們太好了:-) – mane

0

當你要訪問的價值,只是投放指針不會幫助你..

(*(int*)context == 1)將解決您的問題..