函数指针:
定义:函数指针是函数的物理入口地址。即是在编译时,分配的物理入口地址。
引用:不带括号和参数的函数名代表函数的入口地址。
形式:指向函数的指针变量定义形式-->类型 (*指针变量名) ( );
通过指向函数的指针调用函数的形式-->(*指针变量名) (实参表列)。
#include <stdio.h>
//因为要给函数指针赋值,返回类型要和函数指针类型一致
int swap(int *x, int *y)
{
int tmp;
tmp = *x;
*x = *y;
*y = tmp;
return 0;
}
int main()
{
int a, b;
//定义p是指针,且是指向一个函数的指针
int (*p)();
//在给函数指针赋值时,只需给出函数名而不必给出参数
//因为只将函数入口地址赋给p,而不设计虚实结合
p = swap;
scanf("%d%d",&a,&b);
if (a < b)
{
//用函数指针调用函数时,只需用(*p)代替函数名即可
//在(*p)后的括号中根据需要填写上实参
(*p)(&a,&b);
}
printf("%d %d\n",a,b);
return 0;
}
补充:对指向函数的指针变量,像p++,p+n,p--等运算是无意义的。函数指针不能指向函数中的某条指令。