这在一些场景下很有用,比如实现类似于面向对象编程中的虚函数(通过函数指针来实现多态性)。下面是一个简单的例子:
#include <stdio.h>
// 定义一个函数指针类型,用于指向特定的函数签名
typedef void (*FunctionPtr)(void);
// 定义一个结构体,其中包含一个函数指针成员
struct MyStruct {
FunctionPtr func_ptr;
};
// 定义一个函数,用于传递给结构体的函数指针成员
void function1() {
printf("Function 1 called\n");
}
// 定义另一个函数
void function2() {
printf("Function 2 called\n");
}
int main() {
struct MyStruct obj1, obj2;
// 将函数指针分配给结构体的函数指针成员
obj1.func_ptr = &function1;
obj2.func_ptr = &function2;
// 通过结构体中的函数指针成员调用函数
obj1.func_ptr();
obj2.func_ptr();
return 0;
}
在这个例子中,MyStruct结构体包含了一个名为func_ptr的函数指针成员。然后,在main()函数中,我们创建了两个结构体对象obj1和obj2,并将不同的函数指针分配给它们的func_ptr成员。最后,通过调用obj1.func_ptr()和obj2.func_ptr(),我们可以分别调用不同的函数。
|