Erin_coast 2021-10-07 17:05 采纳率: 63.6%
浏览 55
已结题

结构体中指针指向的问题

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条)

报告相同问题?

问题事件

  • 系统已结题 10月17日
  • 已采纳回答 10月9日
  • 创建了问题 10月7日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度