用函数指针变量调用函数
指针变量可以指向一个函数。一个函数在编译时被分配一个入口地址。这个函数入口地址就成为函数的指针。可以用一个指针指向函数,然后通过该指针变量调用此函数。
如,有一个 max 函数,定指向 max 函数的指针变量的方法是:
int (*p) (int, int);
// compare to max function
int max(int, int);
可以看出:只是用(*p)取代了 max,其他都一样。
使用时的代码大致如下:
...
int max(int x, int y);
int (*p) (int, int);
p = max;
int a, b, m;
m = p(a, b); // 等价于 m = max(a, b);
...
注意:在定义指向函数的指针变量 p 时,(p)两侧的括号不可省略,表示 p先与结合,它是指针变量,然后再与后面的()结合,表示此指针变量指向函数,这个函数返回值是整型的。若写成int *p(int, int);
,就变成了声明一个函数了,这个函数的返回值是指向整型变量的指针。
用指向函数的指针作函数的参数
在 C 语言中,函数指针变量常见的用途之一是作为函数的参数,将函数名传给其他函数的形参。这样可以在调用一个函数的过程中根据给定的不同实参调用不同的函数。
网友评论