我正在尝试使用函数指针,这有点像这样:
#include "stdio.h"
typedef void (*func)(int*, int*);
void func1(int *a, int*b)
{
printf("Func1\n");
}
void func2(int *a, int*b)
{
printf("Func2\n");
}
void func3(int *a, int*b)
{
printf("Func3\n");
}
int main()
{
int i;
func f[] = {
func1, func2, func3
};
printf("Hello\n");
for(i=0; i< 3; i++)
{
func fn = f[i];
*(fn)(&i, &i);
}
return 0;
}
我总是得到错误:“虚假价值不被忽视,因为它应该是”
不知道,如何克服这一点。有人可以帮忙吗?
答案 0 :(得分:1)
您需要使用以下内容:
(*fn)(&i, &i);
答案 1 :(得分:1)
它可以是(*fn)(&i, &i)
,也可以是fn(&i,&i)
。否则你试图取消引用函数调用的结果!
(或者,五星级程序员经常说(*****fn)(&i, &i)
。
答案 2 :(得分:0)
此错误意味着您将void函数的返回分配给某个东西,这是一个错误。
试试这个: -
(*fn)(&i, &i);
答案 3 :(得分:0)
试试这个:
(*fn)(&i, &i);
答案 4 :(得分:0)
不要写*(fn)(...)
- 简单fn(...)
就足够了,不需要取消引用任何内容。你所拥有的意思是“取消引用fn(...)的返回值”,但你显然不能这样做。