问题 单项选择题

有以下程序:
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="WangYin",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,它由一个字符数组和一个整形变量hum组成。然后定义两个函数f1和f2。其中f1是值传递的,f2是地址传递的。主函数中定义两个结构体变量a和b并分别赋初值,接着调用函数f1(a),由于函数n是值传递,故执行该函数后并没有改变a的值,再接着调用函数f2(&b),由于该函数是地址传递,执行该函数后将使变量b的值为 {"SunDan",2044},故函数最后输出a.num和b.num的值为2041和2044。所以,4个选项中选项A符合题意。

单项选择题 A1型题
问答题 简答题