C语言问题解释

求C语言大神解释~~~在此先谢过~~~... 求C语言大神解释~~~在此先谢过~~~ 展开
 我来答
My_Persistence
推荐于2016-11-02 · TA获得超过3466个赞
知道大有可为答主
回答量:1201
采纳率:81%
帮助的人:422万
展开全部
讲解如下:
x=sub(p,9,3);
函数调用传参过程:t=p; x=9; y=3;
由于p是指向funa函数的,那么t也指向funa函数了,那么 执行return (*t)(x,y);语句时,实际上是调用了funa函数,那么返回值是12,x=12。
x+=sun(funb,8,3);
函数调用传参过程:
t=funb; x=8,y=3;
传参后,指针t就指向funb函数了,那么 执行return (*t)(x,y);语句时,实际上是调用了funb函数,那么返回值是5。所以x+=5,即x=x+5,x=17。
此题主要考察函数指针的相关知识点。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
c_crazyer
2015-09-18 · 超过11用户采纳过TA的回答
知道答主
回答量:21
采纳率:0%
帮助的人:15.8万
展开全部
首先要理解int (*p)(int,int),这里的p表示指向函数的指针,这个函数的参数是两个int类型,返回值为int类型,即上文定义的funa和funb。
其次要理解sub(int(*t)(),int x, int y),t传递的是指向函数的指针,后两个参数是t指向的那个函数的实参。
x=sub(p,9,3)等同于x=sub(funa,9,3)也等同于x=funa(9,3)即x=9+3,这时的x值是12
同理x+=sub(funb,8,3)等同于x+=8-3即x+=5,结果为17
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
流云更迭
2015-09-18 · 超过20用户采纳过TA的回答
知道答主
回答量:40
采纳率:0%
帮助的人:32.9万
展开全部
p是函数指针,可理解成指向哪个函数就调用哪个函数,开始指向funa,所以x = sub(funa, 9, 3) ,return funa(9, 3)就是9+3=12.然后sub(funb, 8, 3)就是return funb(8, 3),调用funb函数就是返回8-3=5;然后12 + 5 = 17.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式