夜袭中关村 2019-09-25 16:00 采纳率: 0%
浏览 799
已采纳

c语言,每次执行到给结构体内的二维数组成员变量赋值时程序就崩溃了,有大佬知道原因吗

结构体的声明

struct IMPERIAL{
    int **my_map;
    int numVar;
    void(*initialMap)(int **, int );
    void(*clearMap)(int **, int );
};
void myInitialMap(int **my_map, int n)
{
    my_map = (int **)malloc(sizeof(int*) * n);
    for(int i=0;i<n;++i){
        my_map[i] = (int*)malloc(sizeof(int) * n);
    }

    int count=0;
}
void myClearMap(int **my_map, int n)
{
    for(int i=0;i<=n;i++) free(*(my_map + i));
    free(my_map);
}

初始化

int node;
    char myInput[10];
    for(int j=2;j<=item.numVar;j++)  
        for(int i=1;i<j;i++){
            scanf("%s",myInput);
            int b;
            if(myInput[0]!='x')
            {
                sscanf(myInput,"%d",&node);
                item.my_map[j][i]=node;
                item.my_map[i][j]=item.my_map[j][i];
            }
        }

每次一到 item.my_map[j][i]=node; 程序就崩溃了,不知道什么原因啊

编译过了,没有报错,执行到这一步程序就会直接卡住

  • 写回答

2条回答 默认 最新

  • Boover 2019-09-25 16:43
    关注
    void myInitialMap(int **my_map, int n)
    {
        my_map = (int **)malloc(sizeof(int*) * n); // 这句对传入的参数my_map没有影响
        for(int i=0;i<n;++i){
            my_map[i] = (int*)malloc(sizeof(int) * n);
        }
    
        int count=0;
    }
    

    这一段代码有问题,应该改为

    void myInitialMap(int ***my_map, int n) // 调用的时候使用&item.my_map
    {
        *my_map = (int **)malloc(sizeof(int*) * n);
        for(int i=0;i<n;++i){
            (*my_map)[i] = (int*)malloc(sizeof(int) * n);
        }
    
        int count=0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!