首页 百科知识 函数的指针与指向函数的指针变量

函数的指针与指向函数的指针变量

时间:2022-09-22 百科知识 版权反馈
【摘要】:也就是说,当使用某个函数的“调用通道”时就是调用了该函数。p为一个指向int型函数的指针变量。特别要注意的是:“指针变量”外的括号不能缺省,否则将会出错,成了返回指针值的函数。另外,函数的入口地址是唯一的、不变的,对指向函数的指针变量,诸如p+i、p++、p--等运算是没有意义的。

7.4.1 函数的指针与指向函数的指针变量

1.函数的指针

一个函数在编译时,被分配了一个入口地址,这个地址就称为该函数的指针。在C语言程序中,可以用一个指针变量指向一个函数,然后通过该指针变量调用此函数。

C语言规定:函数名本身代表该函数的入口地址。可以这样理解,函数的入口地址是该函数的“调用通道”,且这个“调用通道”是唯一的。也就是说,当使用某个函数的“调用通道”时就是调用了该函数。

2.指向函数的指针变量

在C语言程序中,可以用一个指针变量来指向一个函数,利用该指针变量来访问它所指向的函数。

(1)定义一个指向函数的指针变量的方法一般如下:

函数类型 (*指针变量)();

例如:

img521

p为一个指向int型函数的指针变量。特别要注意的是:“指针变量”外的括号不能缺省,否则将会出错,成了返回指针值的函数。

(2)因为函数名代表了该函数的入口地址,所以可用函数名给指向函数的指针变量赋值,赋值的一般方式为:

指向函数的指针变量=函数名;

例如:

img522

其中,p=max;是将max函数的入口地址赋给指针变量p,但不涉及实参和形参的结合问题,故函数名后不能带括号和参数。

(3)指向函数的指针变量调用一般方式为:

(*函数指针变量)([实参表])

如果要调用max函数,可以直接采用下如下方式:

img523

img524

其中,c=(*p)(4,8);等价于c=max(4,8);

另外,函数的入口地址是唯一的、不变的,对指向函数的指针变量,诸如p+i、p++、p--等运算是没有意义的。

注意:

在新的ANSI C中,c=(*p)(4,8);可以写成c=p(4,8);其效果一样。

例7.20 从键盘上输入两个数,输出其中的最大者。

程序如下:

img525

程序运行结果如下:

img526

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈