C语言,变量a赋值给b,为什么a的值还是改变了

第36题(本题:1分)
若有以下程序
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
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 );
}
则程序的输出结果是( B )。
A) Zhao,m,290,Zhao,f,350 B) Zhao,m,290,Qian,f,350
C) Qian,f,350,Qian,f,350 D) Qian,m,290,Qian,f,350
正确答案:D
答疑:【解析】本题中考查结构体中变量的引用,a结构体中name被修改为Qian,所以本题答案为D。

当a和b为普通变量时, a=b,是把b的值赋值给a, b不变;
当a和b为指针时, a=b, 是把b的指向赋值给a, 让a也可以指向b的指向,b的指向不变;
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答