有以下程序 #include typedef struct stu { char name[10]; char gender; int score; } STU; void f(STU *a, STU *b) { *b = *a; printf("%s

admin2020-05-19  38

问题 有以下程序
#include
typedef struct stu {
char name[10];
char gender;
int score;
} STU;
void f(STU *a, STU *b)
{ *b = *a;
printf("%s,%c,%d,", b->name, b->gender, b->score);
}
main()
{ STU a={"Zhao", ’m’, 290}, b={"Qian", ’f’, 350};
f(&a,&b);
printf("%s,%c,%d\n", b.name, b.gender, b.score);
}
程序的运行结果是( )。

选项 A、Zhao,m,290,Zhao,m,290
B、Zhao,m,290,Qian,f,350
C、Qian,f,350,Qian,f,350
D、Qian,f,350,Zhao,m,290

答案A

解析 结构体变量地址作为函数参数为地址传参,形参和实参指向的为同一块内存地址,所以对数组元素的改变能够影响到实参。语句"*b=*a;"则将a指向的结构体变量中的数据赋值给b指向的结构体变量,实参b的值也发生改变,输出结果为选项A)。
转载请注明原文地址:https://kaotiyun.com/show/V5Cp777K
0

最新回复(0)