结构体指针指向一个函数实例
时间: 2023-12-15 18:57:44 浏览: 96
详解C语言结构体中的函数指针
结构体指针可以指向一个函数实例。这种用法通常称为函数指针,它是一种指向函数的指针,可以使函数作为参数传递给其他函数或存储在数据结构中。
以下是一个示例:
```
#include <stdio.h>
typedef int (*FunctionPtr)(int, int);
int add(int a, int b) {
return a + b;
}
int subtract(int a, int b) {
return a - b;
}
int main() {
FunctionPtr funcPtr;
int a = 5, b = 3;
// 指向 add 函数
funcPtr = &add;
printf("%d + %d = %d\n", a, b, funcPtr(a, b));
// 指向 subtract 函数
funcPtr = &subtract;
printf("%d - %d = %d\n", a, b, funcPtr(a, b));
return 0;
}
```
在上面的例子中,我们定义了一个 `FunctionPtr` 类型的函数指针,它可以指向返回类型为整数、参数类型为两个整数的函数。然后定义了 `add` 和 `subtract` 两个函数,它们符合这个类型的定义。在 `main` 函数中,我们声明了一个指向函数的指针 `funcPtr`,并将它分别指向 `add` 和 `subtract` 函数。最后,我们使用函数指针来调用这两个函数,并输出结果。
需要注意的是,函数指针的类型必须与指向的函数的类型完全匹配,包括返回类型和参数类型。在本例中,我们使用了 `typedef` 来定义了一个函数指针类型 `FunctionPtr`,这使得代码更加简洁易读。
阅读全文