作业帮 > 综合 > 作业

麻烦给讲讲这道题有以下程序float f1(float n){ return n*n; }float f2(float

来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/10 16:59:03
麻烦给讲讲这道题
有以下程序
float f1(float n)
{ return n*n; }
float f2(float n)
{ return 2*n; }
main()
{ float (*p1)(float),(*p2)(float),(*t)(float),y1,y2;
p1=f1; p2=f2;
y1=p2( p1(2.0) );
t = p1; p1=p2; p2 = t;
y2=p2( p1(2.0) );
printf("%3.0f,%3.0f\n",y1,y2);
}
程序运行后的输出结果是
A)8,16 B)8,8 C)16,16 D)4,8
麻烦给讲讲这道题有以下程序float f1(float n){ return n*n; }float f2(float
答案A
函数指针,p1,p2,t都是指向函数的指针,指向的都是返回值是float型,参数也是float型的函数.在使用它们时与直接使用函数一样
y1=p2(p1(2.0))等价于
y1=f2(f1(2.0))
t = p1; p1=p2; p2 = t; 这里是指针交换
而当指针交换后p1指向了函数f2,而p2指向了f1
因此
y2=p2( p1(2.0) ); 等价于
y2=f1( f2(2.0) );