1.函数的指针
一个函数在编译时,被分配了一个入口地址,这个地址就称为该函数的指针。在C语言程序中,可以用一个指针变量指向一个函数,然后通过该指针变量调用此函数。
C语言规定:函数名本身代表该函数的入口地址。可以这样理解,函数的入口地址是该函数的“调用通道”,且这个“调用通道”是唯一的。也就是说,当使用某个函数的“调用通道”时就是调用了该函数。
2.指向函数的指针变量
在C语言程序中,可以用一个指针变量来指向一个函数,利用该指针变量来访问它所指向的函数。
(1)定义一个指向函数的指针变量的方法一般如下:
函数类型 (*指针变量)();
例如:
p为一个指向int型函数的指针变量。特别要注意的是:“指针变量”外的括号不能缺省,否则将会出错,成了返回指针值的函数。
(2)因为函数名代表了该函数的入口地址,所以可用函数名给指向函数的指针变量赋值,赋值的一般方式为:
指向函数的指针变量=函数名;
例如:
其中,p=max;是将max函数的入口地址赋给指针变量p,但不涉及实参和形参的结合问题,故函数名后不能带括号和参数。
(3)指向函数的指针变量调用一般方式为:
(*函数指针变量)([实参表])
如果要调用max函数,可以直接采用下如下方式:
其中,c=(*p)(4,8);等价于c=max(4,8);
另外,函数的入口地址是唯一的、不变的,对指向函数的指针变量,诸如p+i、p++、p--等运算是没有意义的。
注意:
在新的ANSI C中,c=(*p)(4,8);可以写成c=p(4,8);其效果一样。
例7.20 从键盘上输入两个数,输出其中的最大者。
程序如下:
程序运行结果如下:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。