【发布时间】:2014-07-17 10:08:19
【问题描述】:
这是我的代码。我的目的是在运行时为 2D array 分配内存,直到输入中给出的任何大小。
为什么会出现分段错误?是因为数组元素必须连续存储而malloc(动态分配)不允许这种情况发生吗? 或我在编写此代码时出错。请指导我完成。 提前致谢。
int main(){
// STEP 1
int size,**arr,i=0,j=0;
printf("Enter the size of matrix : ");
scanf("%d",&size);
// STEP 2
arr = (int**)malloc(size*size*sizeof(int));
printf("\n Enter the %d elements : \n",size*size);
for(i=0;i<size;i++){
for(j=0;j<size;j++){
// STEP 3
scanf("%d",&arr[i][j]);
}
}
/*
for(i=0;i<size;i++){
for(j=0;j<size;j++){
printf("%d\n",matrix[i][j]);
}
}
*/
return 0;
}
【问题讨论】:
-
你用一维数组试过了吗? ?
-
int **指的是指向int的指针,而您似乎正试图将其用作ints 的二维矩阵
标签: c arrays pointers malloc dynamic-memory-allocation