函数指针
函数指针是指向函数的指针变量。 因而“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。如前所述,C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。有了指向函数的指针变量后,可用该指针变量调用函数,就如同用指针变量可引用其他类型变量一样,在这些概念上是一致的。函数指针有两个用途:调用函数和做函数的参数。
就想数组名一样指向第一元素的常指针一样,函数名也是指向函数的常指针,
函数指针的定义必须和要指向的函数的返回值和形参表一致。
eg:
声明: int (*f) (int x); /* 声明一个函数指针 */
int max(int x,int y)
{
return x>y? x:y;
}
int (*f)(int ,int );
f=max; //直接将函数名赋给f;
其中函数指针是活的,他可以指向任何函数。
不过注意,指向函数的指针变量没有++和--运算,用时要小心。
指针函数和函数指针的区别:
指针函数是指带指针的函数,即本质是一个函数。我们知道函数都又有返回类型(如果不返回值,则为无值型),只不过指针函数返回类型是某一类型的指针。