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

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 thinkphp6配合social login单点登录问题
  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch