函数指针用于保存函数的地址,可实现回调、策略模式、事件处理等。本章详细讲解声明方式、调用方法与实战示例。
int add(int, int); int (*fp)(int, int) = add; // 声明并初始化
printf("%d\n", fp(2,3)); // 与 add(2,3) 等效
typedef int (*binop)(int,int); int calc(int a, int b, binop op) { return op(a,b); }
int add(int a,int b){return a+b;} int sub(int a,int b){return a-b;} int mul(int a,int b){return a*b;} binop ops[] = { add, sub, mul };
typedef struct { const char* name; binop op; } Entry; Entry table[] = { {"add",add}, {"sub",sub}, {"mul",mul} };
#include <stdlib.h> int cmp_int(const void* a, const void* b) { int x = *(const int*)a, y = *(const int*)b; return (x>y) - (x<y); } // qsort(arr, n, sizeof(int), cmp_int);
int* ret_ptr(void); int (*ret_func(void))(int,int); // 返回函数指针的函数
熟练掌握函数指针有助于构建可扩展、低耦合的 C 程序结构,常用于库回调、事件分发与策略切换。