若有以下程序 #include #include #include struct stu { char *name, gender; int score; }; main() { struct stu a={NULL, ’m’, 290}, b

admin2015-07-28  30

问题 若有以下程序
#include
#include
#include
struct stu {
char *name, gender;
int score;
};
main()
{
struct stu a={NULL, ’m’, 290}, b;
a.name=(char *)malloc(10);
strcpy(a.name, "Zhao");
b = a; b.gender = ’f’; b.score = 350;
strcpy(b.name, "Qian");
printf( "%s,%c,%d,", a.name, a.gender, a.score );
printf( "%s,%c,%d\n", b.name, b.gender, b.score );
}
则程序的输出结果是( )。

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

答案A

解析 语句"a.name=(char *)malloc(10); strcpy(a.name, "Zhao");"将字符串"Zhao"赋值给了a中的字符指针a.name,之后把结构体a中的数据赋值给b,然后改变b的gender、score这两个成员的值,而b.name和a.name指向同一块内存地址,所以当执行语句"strcpy(b.name, "Qian");"时,b.name和a.name的值均为"Qian",所以最终结构体变量a的数据为{"Qian",?m?,290},b中的数据为{"Qian",?f?,350}。
转载请注明原文地址:https://kaotiyun.com/show/xKJp777K
0

最新回复(0)