结构体中指针指向的问题

b = a是重新定义了一个结构体对象,b.name获得的是a的地址,在改变b.name的值时改变了b.name的指向,为何会影响a.name的值与指向

struct stu{
    char *name,gender;
    int score;
};
main(){
    struct stu a = {NULL,'m',290},b;
    a.name = (char*)malloc(10);
    strcpy(a.name,"Qian");
    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);
    return 0;
}

因为结构体里, char *name; name定义的是个指针变量,定义结构体对象时,并没有分配额外的空间给它们,改了下,供参考:


```c++
#include<stdio.h>
struct stu{
    char *name,gender;
    int score;
};
main()
{
    struct stu a = {NULL,'m',290},b;
    a.name = (char*)malloc(10);
    strcpy(a.name,"Qian");
    b = a;
    b.gender = 'f';
    b.score = 350;
    b.name = (char*)malloc(10);
    strcpy(b.name,"Aian");
    printf("%s,%c,%d,\n",a.name,a.gender,a.score);
    printf("%s,%c,%d\n",b.name,b.gender,b.score);
  
    return 0;
}

```

没看懂想说啥,输出就是正常的输出啊

strcpy改变的是b.name指针指向空间的内容,而不是直接改变b.name的指向