这在一些场景下很有用,比如实现类似于面向对象编程中的虚函数(通过函数指针来实现多态性)。下面是一个简单的例子:
- #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(),我们可以分别调用不同的函数。
|