C 2-d数组初始化抛出段错误
问题描述:
我正试图潜入一点C编程。所以我试图用双指针创建一个二维数组并用随机值初始化它。在访问阶段但是它抛出一个分段错误C 2-d数组初始化抛出段错误
下面是我的代码条纹下来片段:
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;
}
可否请你指出我什么我做错了吗?
答
这个指针的指针表,你需要在真正的代码,你需要检查的malloc没有双打:)
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;
}
}
当然的表失败等等
http://www.geeksforgeeks.org/dynamically-allocate-2d-array-c/ – NiVeR
你有什么是*不是一个2D数组,所以请不要像一个初始化它。 –
顺便说一句,https://*.com/questions/605845/do-i-cast-the-result-of-malloc?rq=1 – Jens