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 回答