首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有以下程序: #include int add(int x,int y){return(x+y);} void main() {int s,(*pf)(),a=1,b=2; pf=add; … } 则以下函数调用语句错误的是( )。
有以下程序: #include int add(int x,int y){return(x+y);} void main() {int s,(*pf)(),a=1,b=2; pf=add; … } 则以下函数调用语句错误的是( )。
admin
2020-06-16
52
问题
有以下程序:
#include
int add(int x,int y){return(x+y);}
void main()
{int s,(*pf)(),a=1,b=2;
pf=add;
…
}
则以下函数调用语句错误的是( )。
选项
A、s=pf(a,b);
B、s=add(a,b);
C、s=(*pf)(a,b);
D、s=*pf(a,b);
答案
D
解析
pf是一个指向函数的指针,本题的难度在于函数指针的调用。在C语言中,函数名会被转换为指向这个函数的指针,除非这个函数名作为&操作符的操作对象。因此,函数指针的调用可以是add(a.b)和pf(a,b),它们两者是一样的。另外,(*pf)(a,b)也是合法的,表示先对指针pf引用,再调用函数,指针两侧的括号必须有,可以理解为将函数指针反过来转换为函数名再调用函数,其实在ANSI C标准中将pf(a,b)认为是(*pf)(a,b)的简写形式,并且推荐使用前者,因为它更符合函数调用的逻辑。但若写成*pf(a,b)的形式,则因为()优先级高于*,所以将先调用函数,再进行指针的解引用操作,但函数返回的是一个整型数值,因此,调用会出错,选项D不正确。
转载请注明原文地址:https://www.kaotiyun.com/show/vpCp777K
本试题收录于:
二级C语言题库NCRE全国计算机二级分类
0
二级C语言
NCRE全国计算机二级
相关试题推荐
若有以下程序:#includemain(){ints=0,n;for(n=0;n
设有定义:inta,b;floatx,y;,则以下选项中对语句所做的注释叙述错误的是()。
关于C语言标识符,以下叙述中错误的是()。
C源程序中不能表示的数制是()。
定义无符号整数类为UInt,下面可以作为类UInt实例化值的是()。
以下叙述中错误的是()。
下列给定程序中,函数fun的功能是:在整数10到55之间,查找能被3整除且有一位上的数值是5的数,把这些数放在b所指的数组中,这些数的个数作为函数值返回。规定函数中a1放个位数,a2放十位数。请改正程序中的错误,使它能得出正确的结果。注
关于地址和指针,以下说法正确的是()。
下面的说法正确的是()。
对于语句void*p=malloc(sizeof(int)*250);,下面说法正确的是()。
随机试题
牛助产后发现子宫大出血的止血方法正确的是
A、钙和维生素DB、雌激素C、羟乙磷酸钠D、降钙素E、氟化物治疗期间应定期进行妇科检查的药物是
用于表达行业生命周期不同发展阶段的表述有()。
银行业从业人员不得擅自代表机构接受新闻媒体采访。()
小王于2010年7月通过国家公务员考试,进入市法制办工作,因表现突出,2011年1月转正。
1700年至1721年长达21年的战争是()
Americanstobuyacaroftenuseonlineprice-comparisonsitestofindthebestdeal.Mostsuchsiteschargedealersasmallfee
假定有如下程序:PrivateSubFormClick()Dima(4)AsInteger,b(4)AsIntegerFork=0To2a(k+1)=Val(InputBox("请输入一个整数
________yousay,hewon’tlistentoyou.
"Ihavetogotoseemydoctorthisafternoon.""Wouldyoulikemeto______you?"
最新回复
(
0
)