定义函数指针的三种‌常见的语法形式

在 C 语言中,定义函数指针主要有 ‌三种‌ 常见的语法形式。这三种方式本质相同,但在代码可读性和复用性上有所区别。

1. 直接定义变量(基础语法)

这是最原始的写法,直接在声明变量时指定函数签名。

语法格式:‌

typedef 返回值类型 (*类型别名)(参数类型列表);
类型别名 变量名;

 

示例:‌

// 1. 定义类型别名 MathOp
typedef int (*MathOp)(int, int);

// 2. 使用别名定义变量
MathOp op1;
MathOp op2;

// 3. 赋值
op1 = add;
op2 = subtract;

  

2. 使用 typedef 定义函数指针类型(推荐)

这是工程开发中最常用的方式。先通过 typedef 给复杂的函数指针类型起一个别名,然后用这个别名来定义变量。这种方式代码清晰,易于维护。

语法格式:‌

typedef 返回值类型 函数类型别名(参数类型列表);
函数类型别名 *指针变量名;

 

示例:‌

// 1. 定义函数类型 FuncType
typedef int FuncType(int, int);

// 2. 定义指向该类型的指针变量
FuncType *pFunc;

// 3. 赋值
pFunc = add;

  这种方式在定义函数指针数组或作为结构体成员时优势明显,避免了重复书写冗长的签名。

3. 先定义函数类型,再定义指针(较少用)

这种方式分两步走:先用 typedef 定义一个“函数类型”,然后再像定义普通指针一样,在该类型后加 * 来定义指针变量。

语法格式:‌

typedef 返回值类型 函数类型别名(参数类型列表);
函数类型别名 *指针变量名;

  示例:‌

// 1. 定义函数类型 FuncType
typedef int FuncType(int, int);

// 2. 定义指向该类型的指针变量
FuncType *pFunc;

// 3. 赋值
pFunc = add;

  虽然这种写法在逻辑上很直观(类似 typedef int IntType; IntType *p;),但在实际 C 语言项目中不如第 2 种方式常见,因为第 2 种方式更直接地表达了“这是一个指针”的概念。

 

posted @ 2026-10-15 10:52  古锁阳关  阅读(10)  评论(0)    收藏  举报