问题
单项选择题
有以下程序
#include <string.h>
struct STU
int hum;
float TotalScore;
;
void f(struct STU p)
struct STU s[2]=20044,550,20045,537;
p.num=s [1].num;
p.TotalScore-s[1].TotalScore;
main()
struct STU s[2]-20041,703,20042,580;
f(s[0]);
printf("%d %3.0f\n",s[0].num,s[0].TotalScore);
程序运行后的输出结果是
A.20045 537
B.20044550
C.20042580
D.20041 703
答案
参考答案:D
解析: 把结构体变量作为一个参数传递给函数时,传递的是实参结构体变量的值,系统将为结构体类型的形参开辟相应的存储单元,并将实参中各成员的值赋给对应的形参成员。因此,改变形参变量的内容不会影响实参,即传值调用。所以本题的函数f()没有对传递的结构体s[0]作任何改动,结果还是20041 703。应该选择D。