我有2个具有相同参数和返回类型的函数。喜欢
int fun1(int a){
return a+1;
}
int fun2(int a){
return a+2;
}
我制作了一个函数指针int(* funptr)(int)。
而且我想使用malloc并使funptr [0]指向fun1,并且funptr [1]指向fun2。
所以我尝试过
int(*funptr)(int)=(int*)malloc(2*sizeof(funptr));
但是它不起作用。我该怎么办?
我了解的是,您需要一个函数指针数组。更改
int(*funptr)(int)
to
int (*funptr)[2] (int)
并使用funptr[0] = fun1;
和funptr[1] = fun2;
或者,如果必须使用分配的内存,则可以使用
int (**funptr)(int);
然后相应地使用。
您无法索引函数指针。您需要声明函数指针数组
int fun1(int a){
return printf("%s\n",__FUNCTION__);
}
int fun2(int a){
return printf("%s\n",__FUNCTION__);
}
typedef int func(int);
int main()
{
func *farr[2];
farr[0] = fun1;
farr[1] = fun2;
for(int x = 0; x < 20; x++)
{
farr[(rand() & 1)](1);
}
}