void指针解除引用

时间:2012-12-29 01:32:32

标签: c pointers void-pointers

  

可能重复:
  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()函数中取消引用它是错误的吗?

3 个答案:

答案 0 :(得分:5)

if((int *)context ==1)

你想要这个:

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

您正在转向指向int的指针,但您实际想要的是实际访问int,因此您需要取消引用指针。

答案 1 :(得分:3)

你没有将它强制转换为int,你将其类型化为int *,然后没有取消引用它。尝试:

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

答案 2 :(得分:0)

当你想要访问该值时,只需投射指针就不会帮助你..

(*(int*)context == 1)将解决您的问题..