1

重複の可能性:
voidポインターの逆参照

私はこのように関数呼び出しを持っています:

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()関数内で間違って逆参照していますか?

4

3 に答える 3

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

代わりにこれが必要です:

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

あなたはへのポインタにキャストしていましたintが、実際に必要なのは実際にアクセスするintことなので、ポインタを逆参照する必要があります。

于 2012-12-29T01:33:28.993 に答える
3

に型キャストせずint、に型キャストしてからint *、逆参照しませんでした。試す:

if (*(int *)context == 1)
于 2012-12-29T01:33:52.397 に答える
0

値にアクセスしたい場合は、ポインタをキャストするだけでは役に立ちません。

(*(int*)context == 1)あなたの問題を解決します。

于 2012-12-29T03:08:34.523 に答える