Erin_coast
2021-10-07 17:05
采纳率: 77.8%
浏览 53

结构体中指针指向的问题

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;
}

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • qzjhjxj 2021-10-07 18:48
    已采纳

    因为结构体里, 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;
    }
    
    

    ```

    评论
    解决 无用
    打赏 举报
查看更多回答(2条)

相关推荐 更多相似问题