2
通常我们在写c代码的时候,可能希望能在结构体上定义函数,但是c语言中不支持直接定义函数,我们可以通过定义函数指针的方式来实现

// 下面是一个简单的实例

#include <stdio.h>
#include <stdlib.h>
 /* 定义一个结构体,里面有三个成员,是三个函数指针 ,前面千万不要加static,这里并没有分配内存*/
struct prt_fn {
    int (*add) (int a, int b);
    int (*sub) (int a, int b);
    int (*mult) (int a, int b);
};


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

static int sub(int a, int b)
{
    return a - b;
}

static int mult(int a, int b)
{
    return a * b;
}

int main()
{
    int a = 10, b = 5;
    // 初始化结构体
    struct prt_fn pfn = { add, sub, mult };

    printf("a + b = %d\n", pfn.add(a, b));
    printf("a - b = %d\n", pfn.sub(a, b));
    printf("a * b = %d\n", pfn.mult(a, b));
    return 0;
}

这个名字好长
37 声望4 粉丝

程序猿