问题 单项选择题

有以下程序
#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。

选择题
判断题