A-A+
若有以下程序 typedefstructstu{char*name gender;intsc
问题详情
若有以下程序 typedefstructstu{char*name,gender;intscore;}STU; voidf(char*p){p=(char*)malloc(10);strcpy(p,“Qian”);) main(){ STUa=fNULL,m,290},b; a.name=(char*)malloc(10); strcpy(a.name,Zhao); b=a=f(b.name); b.gender=f:b.score=350; printf(%s,%c,%d,,a.name,a.gender,a.score); printf(%s,%c,%dha,b.name,b.gender,b.score);} 则程序的输出结果是
A.Zhao,m,290,Qian,f,350
B.Qian,f,350,Qian,f,350
C.Qian,m,290,Qian,f,350
D.Zhao,m,290,Zhao,f,350
请帮忙给出正确答案和分析,谢谢!
参考答案
正确答案:D
函数f(char*p)的主要功能申请字符串的存储空间,然后存入字符串“Qian”,但当程序调用结束以后,形参指针变量p撤销,存储的字符串地址丢失,而不能更改实参指针的值。主函数中结构体变量定义同时赋初值,初始情况其name指针成员存储空,而后语句为其分配存储空间,存入字符串""zhao""。执行b=a;语句后,b的数据和a的数据相同,调用函数f以后,b的name成员的值没变。