什么是函数指针
如果在程序中定义了一个函数,那么在编译时系统就会为这个函数代码分配一段存储空间,这段存储空间的首地址称为这个函数的地址。而且函数名表示的就是这个地址。既然是地址我们就可以定义一个指针变量来存放,这个指针变量就叫作函数指针变量,简称函数指针。
例如:
- int(*q)(int, int)
- 定义了一个指针变量 p,该指针变量可以指向返回值类型为 int 型,且有两个整型参数的函数。q 的类型为 int(*)(int,int)。
所以函数指针的定义方式为:
函数返回值类型 (* 指针变量名) (函数参数列表);
如何用函数指针调用函数
举例:
- int Fun(int y); /*声明一个函数*/
- int (*q) (int y); /*定义一个函数指针*/
- p = Fun; /*将Fun函数的首地址赋给指针变量p*/
代码编写:
- # include <stdio.h>
- int Zui(int x, int y) //定义Zui函数,函数写在前面不需要写函数声明
- {
- int z;
- if (x > y)
- {
- z = x;
- }
- else
- {
- z = y;
- }
- return z;
- }
- int main()
- {
- int(*p)(int, int); //定义一个函数指针
- int a, b, c;
- p = Zui; //把函数Max赋给指针变量p, 使p指向zui函数
- printf("请输入a 和 b:");
- scanf("%d%d", &a, &b);
- c = (*p)(a, b); //通过函数指针调用Zui函数
- printf("a = %d\n b = %d\n zui = %d\n", a, b, c);
- return 0;
- }
输出的结果是:
请输入a 和 b::5 6
a = 5
b = 6
zui = 6