先举一个用函数指针调用函数的例子int Func(int x); /*声明一个函数*/int (*p) (int x); /*定义一个函数指针*/p = Func;/*将Func函数的首地址赋给指针变量p*/
int Func(int x);
这一句是声明一个函数,是我们要被函数指针调用的函数,而且函数名表示函数的首地址。
int (*p) (int x);
这里定义了一个函数指针,int(*p) (int x); 里的int指的是函数的返回值,指要被调用的函数的返回值是整形。
int(*p)(int x); 里的*P指的是指向函数首地址的指针变量。
int (*p) (int x);int x表示被调用的函数参数是一个且是整形。
p = Func;
这一句是把被调函数的首地址存在定义的指针变量里,用来指向被调函数。
定义的函数指针和声明的函数一一对应,对照着看会很清晰。
举一个完整实用简单的例子来帮助理解
# include <stdio.h>int Max(int, int); //函数声明int main(void){int(*p)(int, int); //定义一个函数指针int a, b, c;p = Max; //把函数Max赋给指针变量p, 使p指向Max函数printf("please enter a and b:");scanf("%d%d", &a, &b);c = (*p)(a, b); //通过函数指针调用Max函数printf("a = %d\nb = %d\nmax = %d\n", a, b, c);return 0;}int Max(int x, int y) //定义Max函数{int z;if (x > y){z = x;}else{z = y;}return z;}
输出结果是:
please enter a and b:5 6
a = 5
b = 6
max = 6
如果觉得《如何用函数指针调用函数》对你有帮助,请点赞、收藏,并留下你的观点哦!