用C解释函数指针

时间:2014-10-01 14:57:02

标签: c function-pointers

如何在C中创建最基本的函数指针?

2 个答案:

答案 0 :(得分:1)

这是一个非常简单的例子:

#include <stdio.h>
#include <string.h>

int add(int x, int y) {
    return x + y;
}

int sub(int x, int y) {
    return x - y;
}

int main() {
    char const * operator = "addition";

    int (*operation)(int, int) = NULL;
    if (strcmp(operator, "subtract") == 0)
        operation = sub;
    if (strcmp(operator, "addition") == 0)
        operation = add;

    if (operation) {
        int x = 3;
        int y = 7;
        int z = operation(x, y);
        printf("%s %d %d == %d\n", operator, x, y, z);
    }
}

这在哪里有用?

我见过的一个常见用例是创建接口。因此,例如,我们有一种对象,比如表示网络接口的结构。现在,因为有不同的硬件后端,我们可能希望根据硬件实现不同地实现这些功能。

因此我们可能在接口结构中有一个函数指针,用于初始化硬件,发送数据包和接收数据包。

答案 1 :(得分:0)

此代码将演示如何创建和修改基本函数指针

#include <stdio.h>

int my_function(int);
int (*function)(int)=&my_function;

int my_function2(int x){
        function=&my_function;  // & is optional
        return (0);
}

int my_function(int x){
        function=my_function2;
        return (x);
}

/* And an example call */

int main(){
        printf ("%d \n",function(10));
        printf ("%d \n",function(10));
        printf ("%d \n",function(8));
        return 0;
}