我正在努力使用函数int ** Solve()。我没有在任何地方找到解决方案,或者我可能无法准确地表达我的问题。我无法返回正确的值,我总是得到编译器错误或分段错误。如何初始化int ptr **,我想从函数返回?请注意,给出了函数类型(int **),我无法更改它。我试图使用calloc,因为如果我想返回一行int ptr [4] [4],它说我正在返回局部变量。我不知道该怎么做,而且ptr也许不必是int **。我只想返回正确的元素并使用return ptr。我的代码:
int** Solve(){
int array[6][6];
//some determining of array's elements...
int **ptr=calloc(4,sizeof(int*));
for(int i=0;i<4;i++){
for(int j=0;j<4;j++){
ptr[i][j]=array[i+1][j+1];
}
}
return ptr;
}
答案 0 :(得分:1)
我会根据你的问题添加评论,但我缺乏声誉。
int r = 3, c = 4, i, j, count;
int **arr = (int **)malloc(r * sizeof(int *));
for (i=0; i<r; i++)
arr[i] = (int *)malloc(c * sizeof(int));
这就是2d数组分配必须如何。
malloc和calloc之间的区别在于calloc零初始化已分配的内存,因此在您的情况下它们是可互换的。