有以下程序 int add(int a,int b) {return(a+b)} main() { int k,(*f)(),a=5,b=10; f=add; ... }

则以下函数调用语句错误的是A.k=(*f)(a,b);B.k=add(a,b);C.k=*f(a,b);D.k=f(a,b);这道题的题干是什么意思啊?为什么答案是c,... 则以下函数调用语句错误的是
A.k=(*f)(a,b); B.k=add(a,b);
C.k=*f(a,b); D.k=f(a,b);
这道题的题干是什么意思啊?为什么答案是c,
展开
 我来答
艾丝凡怠速放缓
推荐于2018-03-13 · TA获得超过730个赞
知道答主
回答量:111
采纳率:100%
帮助的人:15.8万
展开全部
这个题是考察 函数指针的应用方式
使用函数的时候 如果是函数名的调用,编译器会自动转化成函数指针去执行函数。
所以 调用函数就有了两种方式
第一种 就是 答案A和B
这里直接调用函数名 (系统会转成函数指针)
第二种 就是答案D
直接调用函数函数指针

答案C错误是因为优先级这样就成了k = 函数返回值得指针了~ 而k是一个整形不能接受指针值~

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

补充:
int (*f)() //定义了一个指针变量f,他是指向一个返回值是整型变量的函数。叫做指向函数的指针变量。
int add(int a,int b) {return (a+b);} // 定义了一个函数add,函数有两个整型的参数。返回值类型也是整型。功能是计算两个整数相加。大括号是函数体,就像main函数后面的大括号一样。return是返回语句,是函数返回到调用它的函数。后面的(a+b)是返回的值,即两个参数的相加结果。
k=f(a,b) // 是一个赋值语句和函数调用语句。用指针形式调用函数,将结果赋给k. 前提f要指向函数add,要有f=&add;
k=(*f)(a,b) // 是一个赋值语句和函数调用语句。用指针形式调用函数,将结果赋给k.前提f要指向函数add,要有f=add;
什么名真难起
2012-08-13 · TA获得超过606个赞
知道小有建树答主
回答量:804
采纳率:0%
帮助的人:376万
展开全部
A、B效果一样,都是值运算,D是函数地址运算,运算结果保存在该函数的地址,C想与A做相同的运算,所以一定是在A、C里面选择,但是C语法错误
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一蘅新
2012-08-13 · TA获得超过2359个赞
知道大有可为答主
回答量:2547
采纳率:0%
帮助的人:1602万
展开全部
c在执行的时候是*(f(a,b)),题目里面根本就没有f()函数,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式