我正在尝试潜入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;
}
请你指点我做错了什么?
答案 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是否没有失败等等