1 函数指针指向函数变量
EG:
#include<stdio.h>
int max(int a,int b)
{
return a > b ? a : b;
}
int main()
{
int(*p)(int a, int b); //可以省略形参 int(*p)(int a, int b);
p = max; //等价于 p = &max
int i = p(3, 5); //等价于 (*p)(3,5)
printf("max(3,5): %d\n", i);
//p++; //函数指针只能指向函数首地址,不能随意加减
return 0;
}
2 函数指针作为函数参数
EG:
#include<stdio.h>
int max(int a,int b)
{
return a > b ? a : b;
}
int myMax(int a,int b,int(*p)(int,int))
{
return p(a, b);
}
int main()
{
printf("%d\n", myMax(3, 5,max));
return 0;
}
3 定义函数指针类型
EG:
#include<stdio.h>
int max(int a,int b)
{
return a > b ? a : b;
}
int main()
{
typedef int(*FuncPtr)(int, int); //定义函数类型
FuncPtr p = max;
printf("%d\n", p(3, 5));
return 0;
}