引子
上一节,我们通过例子知道,何如定义一个函数指针,并且把这个指针指向函数,现在我们进一步看看该如何定义和使用指向函数的指针变量。
定义
定义指向函数的指针变量一般形式为:
类型名 (* 指针变量名)(函数参数表列)
1 | int (*p)(int,int); |
注意,指针变量名必须用括号包起来。类型名,是指函数返回值的类型。
注意
- 定义指向函数的指针变量,并不意味着这个指针变量可以指向任何函数。三点要一致,
返回值类型和参数数量、参数类型
,只有定义指针变量时这三点和需要指向的函数相同
,才能指向该函数。我们可以将一个指针先后指向同类型的不同函数。 - 如果要用指针变量调用函数,必须将指针与函数相连接,也就是将指针变量指向该函数。
1 | int max(int a, int b); |
- 在将指针变量指向函数的时候,不必包含函数参数,因为这里没有虚实结合的过程,并且
传递的是函数的入口地址
。 - 在使用指针调用函数的时候,非常简单,只要把函数名替换成(*指针名)。
1 | p=max; |
- 对指向函数的指针,不能进行算术运算,例如加减,加加减减都是无意义的,因为不能移动指针到下一个函数。
- 用函数名调用函数,只能调用一个函数,用指着你调用就比较灵活,可以先后调用不同的函数。
使用
输入2个数,让用户选,如果是 max 就调用 max 函数,如果是 min,就调用 min 函数。
1 |
|
我们看到,虽然我们有两个函数 min 和 max,但是 min 和 max 根据判断结果,用最终调用的指针函数指向它们。
也就是说,最终调用的是指针函数,但是指针函数究竟指向谁,还是根据判断结果进行赋值。
尾巴
这是我的个人学习笔记,主要是应付考研复习使用,充斥着一些吐槽和个人观点,并不严谨,欢迎大家参考、指正。