当前位置: 首页 > 文章教程  > 考试与认证 > 计算机等级考试

全国计算机等级考试二级C语言9.5指向函数的指针及返回指针值的函数

8/22/2020 10:24:52 PM 人评论

全国计算机等级考试二级C语言9.5指向函数的指针及返回指针值的函数

9.5 指向函数的指针及返回指针值的函数

考点7 用函数指针变量调用函数

真考链接

考点7 在选择题中主要以读程序题的形式出现。此考点难度偏上,属于重点掌握知识点,在选择题中的考核概率为20%。

已经知道,可以用指针变量指向整型变量、字符型变量、字符串、数组,同样指针变量也可以指向一个函数。编译时,一个函数将被分配给一个入口地址,这个入口地址就称为该函数的指针。因此,可以通过使用一个指向函数的指针变量调用此函数。

说明:

(1)指向函数的指针变量的一般定义形式为:

数据类型(*指针变量名)();

例如:int(*s)();,“数据类型”指该函数返回值的类型。

(2)(*s)()表示定义了一个指向函数的指针变量,但目前它不是固定指向哪一个函数,而只是表示定义了这样一个类型的变量,它的作用是专门用来存放函数的入口地址。在程序中实现把某一个函数的地址赋给它,它就指向该函数,这样它的值也就确定了。在一个程序中,一个指针变量可以先后指向不同的函数,也就是说指向函数的指针变量和普通指针变量一样,可以多次使用。

(3)在给函数指针变量赋值时,只需给出函数名而不必给出参数。例如:

s=fun;/*fun为已有定义的有参函数*/

因为是将函数入口地址赋给s,不涉及参数的问题,不能写成:

s=fun(a,b);

(4)用函数指针变量调用函数时,只需将(*s)代替函数名即可(s为已经定义过的指向函数的指针变量名),在(*s)之后的括号中根据需要写上实参。

(5)对指向函数的指针变量,有些运算,如++s、--s、s+3等都是没有意义的。

小提示

在C语言中,()的优先级比*高,因此,在定义指向函数的指针变量时,“*指针变量名”外面必须有括号。

和变量的指针一样,函数的指针也必须赋初值,才能指向具体的函数。由于函数名代表了该函数的入口地址,因此,一个简单的方法是:直接用函数名为函数指针变量赋值。

真题精选

有以下程序:

int fa(int x)

{ return x*x;

int fb(int x)

{ return x*x*x;

int f(int(*f1)(),int(*f2)(),int x)

return f2(x)-f1(x);

main()

{ int i;

i=f(fa,fb,2);

printf("% d\n",i);

程序运行后的输出结果是(  )。

A.-4    B.1    C.4    D.8

【答案】C

【解析】本题考点是函数之间的参数传递。只要注意在被调用函数中的形参是指针类型还是基类型即可

相关教程

共有条评论 网友评论

验证码: 看不清楚?