C语言,关于结构体的问题???

2025-05-16 18:18:58
推荐回答(2个)
回答(1):

因为a.name是一个char指针类型,那么b=a的时候,b.name会复制a.name,也就是说b.name和a.name指向同一块内存,那么接下来把b.name指向的内存改变了,那么a.name也指向这个字符串,就会变成Qian

回答(2):

这种直接赋值的b=a写法,是结构体的浅拷贝,赋值之后,score,gender和name都是原来结构体的一个副本,值是一样的(注意那个name,它的值跟以前一样,也就意味着你的b和a的name指针是指向同一个位置的),所以你对a或b中的score,gender的操作都不会影响对方,但是对name的操作就不一样,二者指向的位置一样,所以改变一个name,就会同时影响两者的值,所以答案就是D
注:你可以在程序的最后用 printf("%p %d - %p %d\n",a.name,a.name,b.name,b.name); 输出一下