#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
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
name 是指针,指向内存地址,a,b的那么是指向同一个地址的,name被b修改后,a的name也跟b的name一样。其他两个是具体的值,a,b的值不一样。
关注一下值和引用的区别。
居然问了118个问题了,提问冠军啊
b=a使得b和a指向同一块内存空间,那么用b修改内存空间数据,用a访问的就是被修改过的数据
所以
strcpy(b.name, "Qian");之后,a.name也是Qian了