C 2-d数组初始化会引发段错误

时间:2017-09-16 18:48:56

标签: c multidimensional-array segmentation-fault

我正在尝试潜入C编程。所以我试图用双指针创建一个二维数组并用随机值初始化它。但是在访问阶段,它会抛出分段错误

下面是我的代码的条带化片段:

int main(void){

// Memory allocation for arrays

int size = 3;

double **matrix = (double **)malloc(sizeof(double *)*size*size);

int i, k;

for(i=0; i<size; i++){
      for(k=0; k<size; k++){
        matrix[i][k]  = ((double)rand())/1314.7;
      }
}

return 0;
}

请你指点我做错了什么?

1 个答案:

答案 0 :(得分:-1)

这是指针表的指针,需要双打表:)

double *matrix = malloc(sizeof(double)*size*size);

int i, k;

for(i=0; i<size; i++){
      for(k=0; k<size; k++){
        matrix[i * size + k]  = ((double)rand())/1314.7;
      }
}

**

double **matrix = malloc(sizeof(double *)*size);

for(int i = 0; i < size; i++)
    *(matrix + i) = malloc(sizeof(double) * size);

for(i=0; i<size; i++){
      for(k=0; k<size; k++){
        matrix[i][k]  = ((double)rand())/1314.7;
      }
}

当然在实际代码中你需要检查malloc是否没有失败等等