有以下程序 #include<stdio.h> int funa( int a, int b){ return a+b; } int funb( int a, int b){ return a-b; } int sss( int (*t)(), int x

admin2019-12-17  32

问题 有以下程序
#include<stdio.h>
int funa( int a, int b){
return a+b; }
int funb( int a, int b){ return a-b; }
int sss( int (*t)(), int x, int y ) { return( (*t)(x,y) ); }
main() {
int x;
x=sss( funa, 9,3 );
x+=sss(funb,8,3 );
printf("%d\n", x ); }
程序运行后的输出结果是

选项 A、17
B、23
C、24
D、22

答案A

解析 函数funa的功能计算两个数据的和,funb的功能计算两个数据的差,函数sss中利用指向函数的指针作为函数的参数,可以在调用的时候,根据接收的函数地址来决定调用那一个函数。主函数中调用x=sss( funa, 9,3 ),将funa函数的地址传递给t,因此sss函数成为求两个数据的和12,继续将funb函数地址传给t,求两个数据差为5,和s累加后结果为17。
转载请注明原文地址:https://kaotiyun.com/show/s9Cp777K
0

最新回复(0)