我想将内存分配给函数指针

问题描述 投票:1回答:1

我有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));  

但是它不起作用。我该怎么办?

c malloc function-pointers
1个回答
0
投票

我了解的是,您需要一个函数指针数组。更改

 int(*funptr)(int)

to

int  (*funptr)[2] (int)

并使用funptr[0] = fun1;funptr[1] = fun2;

或者,如果必须使用分配的内存,则可以使用

int (**funptr)(int);

然后相应地使用。


0
投票

您无法索引函数指针。您需要声明函数指针数组

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);
    }
}

© www.soinside.com 2019 - 2024. All rights reserved.