在c中返回int **函数

时间:2018-05-30 11:37:00

标签: c arrays pointers

我正在努力使用函数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;
}

1 个答案:

答案 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零初始化已分配的内存,因此在您的情况下它们是可互换的。