A-A+

若有以下程序 structstu{char*name gender;intscore;);

2022-08-12 19:03:54 问答库 阅读 197 次

问题详情

若有以下程序 structstu{char*name,gender;intscore;); main(){ structstua={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,%dn”,b.name,b.gender,b.score);) 则程序的输出结果是
A.Zhao,m,290,Qian,f,350
B.Qian,f,350,Qian,f,350
C.Zhao,m,290,Zhao,f,350
D.Qian,m,290,Qian,f,350

请帮忙给出正确答案和分析,谢谢!

参考答案

正确答案:D
主函数中定义结构体类型stmctstu,有三个成员,第一个成员为字符指针变量。主函数中为stu类型变量a赋值,首先为a_name成员分配存储空间,存入数据。b=a;语句执行完毕以后,a和b的各个成员值相同,需要注意的是b.name和a.name成员都保存了同一段内存的地址,因此当为变量b赋值的时候,同样更改了a的name成员,而其他成员由于有单独的存储空间而不会发生改变。

考点:程序