c语言和c++完全就是两种不同的语言。但是c++兼容c,c++最大的特点就是引入了类(Class)。那么如何在c语言中实现类似于c++中类的操作呢?
实现代码
定义结构体
1 | typedef struct PID_Regulator_t |
PID计算函数
1 | void PID_Calc(PID_Regulator_t *pid) |
定义结构体时,将Calc
这个函数指针指向void PID_Calc(PID_Regulator_t *pid)
这个函数。
1 |
|
某个函数中调用了这种方式来进行计算PID。
1 | void RammerSpeedPID( int16_t TargetSpeed ) |
原理
函数指针是指向函数的指针变量。函数具有可赋值给指针的物理内存地址,一个函数的函数名就是一个指针,它指向函数的代码。一个函数的地址是该函数的进入点,也是调用函数的地址。将指针指向函数名也就是函数的进入点,就可以达到用指针运行函数的功能。
定义形式:
1 | 类型 (*指针变量名)(参数列表); |
例如:
1 | int (*p)(int i,int j); |