C语言 结构体内定义指针,用于调用函数
时间: 2023-07-20 09:39:20 浏览: 63
在 C 语言中,可以在结构体中定义函数指针,从而实现通过结构体来调用函数的功能。以下是一个简单的示例:
```
#include <stdio.h>
// 结构体定义
typedef struct {
int x;
int y;
int (*add)(int, int); // 函数指针
} Point;
// 函数定义
int add(int a, int b) {
return a + b;
}
int main() {
Point p;
p.x = 1;
p.y = 2;
p.add = add; // 将函数指针赋值给结构体的成员变量
int result = p.add(p.x, p.y); // 通过结构体调用函数
printf("Result: %d\n", result); // 输出结果
return 0;
}
```
在上面的例子中,我们定义了一个名为 `Point` 的结构体,该结构体包含了两个整型成员变量 `x` 和 `y`,以及一个函数指针成员变量 `add`。接着,我们定义了一个名为 `add` 的函数,该函数用于将两个整型数相加并返回结果。在 `main` 函数中,我们创建了一个 `Point` 类型的变量 `p`,并将其成员变量初始化。然后,我们将 `add` 函数的地址赋值给 `p.add`,从而将该函数指针存储在结构体中。最后,我们通过 `p.add` 指针来调用 `add` 函数,并将结果存储在 `result` 变量中。
当运行该程序时,输出结果为:
```
Result: 3
```
可以看到,通过结构体中存储的函数指针,我们成功地调用了 `add` 函数,并得到了正确的结果。