指针变量可以指向一个函数,每个函数在编译时被分配了一个入口地址,称为函数指针。在C语言中,可以定义函数指针类型和函数指针变量,可以通过该指针变量调用指向的函数.
#include<stdio.h> int max(int x, int y) { int temp; if (x > y) { temp = x; } else { temp = y; } return temp; } /* 注意1:定义函数指针类型 */ typedef int (*PMAX)(int, int); void main() { /* 注意2:定义函数指针变量 */ PMAX pmax; int i = 50, j = 60; /* 注意3:函数指针变量赋值 */ pmax = max; /* 注意4:通过函数指针变量调用所指向的函数*/ printf("%d\n",(*pmax)(i, j)); }
注意1:定义函数指针类型的格式为:
typedef 返回值类型(*函数指针类型)([参数类型表]);
注意2:定义函数指针变量的格式为
函数指针类型 函数指针变量
注意3:函数指针变量的赋值可以直接使用函数名作为函数指针
注意4:通过指针变量调用所指向的函数有两种方法:
一种是(*指针变量名)(实参表),另一种是指针变量名(实参表)
以上代码也可以使用如下方式
#include<stdio.h> int max(int x, int y) { int temp; if (x > y) { temp = x; } else { temp = y; } return temp; } void main() { /* 注意1:定义函数指针 */ int (*PMAX)(int, int); /* 注意2:定义函数指针变量 */ PMAX pmax; int i = 50, j = 60; /* 注意3:函数指针变量赋值 */ pmax = max; /* 注意4:通过函数指针变量调用所指向的函数*/ printf("%d\n",(*pmax)(i, j)); }