我有这样一个函数调用:
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()函数中取消引用它是错误的吗?
答案 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)
将解决您的问题..