lemonqwq 2023-10-17 17:16 采纳率: 0%
浏览 14

C语言使用malloc分配的指针数组赋值出错

我想要通过malloc方法创建一个结构体指针数组,然后在用BinTree指针给数组赋值时会报类型不匹配的错误。

img

img


但是我可以创建一个结构体数组,然后用BinTree指针指向的数据给他赋值

img


这是什么原因呢

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-10-17 21:18
    关注

    【以下回答由 GPT 生成】

    问题的原因是在使用malloc分配内存时,只分配了指针数组的内存,而没有为指针数组中的每个指针分配内存空间。因此,在给指针数组赋值时会报类型不匹配的错误。

    解决这个问题的方法是,对于每个指针数组元素,都使用malloc分配内存空间。

    以下是修改后的代码示例:

    struct BinTree {
      int val;
      struct BinTree *left;
      struct BinTree *right;
    };
    
    int main() {
      struct BinTree **array = (struct BinTree **)malloc(3 * sizeof(struct BinTree *));
      struct BinTree *tree = (struct BinTree *)malloc(sizeof(struct BinTree));
      tree->val = 1;
      tree->left = NULL;
      tree->right = NULL;
    
      // 分配内存空间给指针数组的每个元素
      for (int i = 0; i < 3; i++) {
        array[i] = (struct BinTree *)malloc(sizeof(struct BinTree));
      }
    
      // 将tree指针赋值给指针数组的第一个元素
      array[0] = tree;
    
      // ...
    
      // 释放内存
      free(tree);
      for (int i = 0; i < 3; i++) {
        free(array[i]);
      }
      free(array);
    
      return 0;
    }
    

    通过以上修改,我们为指针数组的每个元素分配了内存空间,并成功将tree指针赋值给了指针数组的第一个元素。最后,不要忘记在程序结束时释放所有分配的内存空间。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 10月17日

悬赏问题

  • ¥15 微信原生小程序tabBar编译报错
  • ¥350 麦克风声源定位坐标不准
  • ¥15 apifox与swagger使用
  • ¥15 egg异步请求返回404的问题
  • ¥20 Ti毫米波雷达板同步
  • ¥15 安装了kali后用VM打开,没有鼠标且无法控制怎么办啊
  • ¥15 关于#python#的问题:无功优化问题数学建模要以3机9节点为算例编写一个以最小有功网损为目标的无功优化问题,想要了解清楚其中数学建模的具体公式进行学习
  • ¥15 mvc采用element分页的问题
  • ¥15 proteus怎样构建他励直流发电机模型?
  • ¥15 求制作PPT有偿,帮