1. 变量指针
2. 函数指针
指向函数的起始地址
举例:定义一个指向函数的指针pfun
3. 对比普通指针和函数指针
/*
lesson5:函数指针
*/
//加法函数
int add(int a,int b)
{
return a+b;
}
//减法函数
int sub(int a,int b)
{
return a-b;
}
# if 1
//定义函数指针别名
typedef int (*pfun)(int, int);
//计算函数
int calc(pfun fp, int a, int b)
{
return fp(a,b);
}
#else
//不定义函数指针别名,名字较长
//typedef int (*pfun)(int, int);
//计算函数
int calc(int (*pfun)(int, int), int a, int b)
{
return pfun(a,b);
}
#endif
int main(void)
{
int c;
c=calc(add, 5, 3); //加法
c=calc(sub, 5, 3); //减法
return 0;
}
4. 函数指针的应用
函数里面,调用函数指针所指向的函数来进行运算。
在单片机裸机开发中,函数指针使用的不多,但是在RTOS中,函数指针使用的非常多。创建任务的任务函数就是通过函数指针来传值的。