展开全部
讲解如下:
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。
此题主要考察函数指针的相关知识点。
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。
此题主要考察函数指针的相关知识点。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先要理解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
其次要理解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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询