C语言中的函数指针

C语言中的函数指针,c,pointers,function-pointers,C,Pointers,Function Pointers,如何在C中创建“函数指针”(以及(例如)函数具有参数)? 当我第一次深入研究函数指针时,我发现这个网站很有用 首先声明函数指针: typedef int (*Pfunct)(int x, int y); 几乎与功能原型相同。 但是现在您所创建的只是一种函数指针(带有typedef)。 现在您可以创建该类型的函数指针: Pfunct myFunction; Pfunct myFunction2; 现在将函数地址分配给这些地址,您可以像使用函数一样使用它们: int add(int a, int

如何在C中创建“函数指针”(以及(例如)函数具有参数)?


当我第一次深入研究函数指针时,我发现这个网站很有用


首先声明函数指针:

typedef int (*Pfunct)(int x, int y);
几乎与功能原型相同。
但是现在您所创建的只是一种函数指针(带有
typedef
)。
现在您可以创建该类型的函数指针:

Pfunct myFunction;
Pfunct myFunction2;
现在将函数地址分配给这些地址,您可以像使用函数一样使用它们:

int add(int a, int b){
    return a + b;
}

int subtract(int a, int b){
    return a - b;
}

. . .

myFunction = add;
myFunction2 = subtract;

. . .

int a = 4;
int b = 6;

printf("%d\n", myFunction(a, myFunction2(b, a)));
int (*f(int x))(double y);

函数指针非常有趣。

您还可以定义返回函数指针的函数:

int add(int a, int b){
    return a + b;
}

int subtract(int a, int b){
    return a - b;
}

. . .

myFunction = add;
myFunction2 = subtract;

. . .

int a = 4;
int b = 6;

printf("%d\n", myFunction(a, myFunction2(b, a)));
int (*f(int x))(double y);

f是一个函数,它接受一个int参数并返回指向一个接受一个双参数并返回int的函数的指针。

有趣的示例-添加一个浮点和两个字符?当然,您不是一直想将3.145添加到“z”并将结果作为整数返回吗!?我将把这个例子改成更理智一点的例子