问题 单项选择题

有以下程序 struct STU{ char name[10]; int num; }; void f1(struct STU C) { struct STU b={"LiSiGuo",2042}; c=b; } void f2(struct STU*C) { struct STU b={"SunDan",2044}; *c=b;} main() { struct STU a={"YangSan",2041},b={"Wang Yin",2043}; f1(a) ;f2(&b) ; printf("%d%d\n",a.num,b.num); } 执行后输出结果是

A.2041 2044

B.2041 2043

C.2042 2044

D.2042 2043

答案

参考答案:A

解析:本题中首先定义了一个结构体类型STU,它由一个字符数组和一个整型变量num组成。然后定义两个函数f1和f2。其中f1是值传递的,f2是地址传递的。主函数中定义两个结构体变量a和b并分别赋初值,接着调用函数f1(a) ,由于函数f1是值传递,故执行该函数后并没有改变a的值,在接着调用函数f2(&b) ,由于该函数是地址传递,执行该函数后将使变量b的值为{“SunDan”,2044},故函数最后输出的a.num和b. num的值为2041和2044。

填空题
单项选择题