gpt4 book ai didi

c - 如何在双指针中返回 int 数组?

转载 作者:太空宇宙 更新时间:2023-11-04 06:13:09 28 4
gpt4 key购买 nike

我需要编写一个返回数组数组的函数:

return_array = { {1}, {1,2,3}, {...}, ....};

每个数组都有不同的大小。该函数必须符合以下签名:

int** generate(int n, int** column_sizes)

n 是函数的输入,我用它来创建 return-array。我知道如何创建return_array,但我不明白应该如何在双指针int** column_sizes 中返回每个数组的大小?

我只是在单个指针 int* column_sizes 中返回它们,如下所示:

int** generate(int n, int* column_sizes){
int return_size=some_function(n);
int** returned_array=malloc(return_size*sizeof(int*));
...
column_sizes[0]=c0; // First array size
column_sizes[1]=c1; // Second array size
...
return returned_array;
}

最佳答案

column_sizes 参数的目的是将返回的双指针的每个子数组中的元素数传递给调用者。

如果要在函数内部分配,则必须是双指针。

#include <stdlib.h>
#include <stdio.h>

int** generate(int n, int** column_sizes){


*column_sizes = malloc(n*sizeof(int));

for (int i=0; i<n; i++)
(*column_sizes)[i]=i;

int** return_array=malloc(n*sizeof(*int));
for(int i=0; i<n; i++) {
return_array[i]=malloc((*column_sizes)[i]*sizeof(int));
for(int j=0; j<(*column_sizes)[i]; j++) {
// set the j'th value in the i'th array
return_array[i][j]=i*j;
}
}
return return_array;
}

int main() {
int *column_sizes;

int n=4;

int** arrays= generate(n, &column_sizes);
printf("%i\n", *column_sizes);


for(int i=0; i<n; i++) {
for(int j=0; j<column_sizes[i]; j++) {
printf("%i %i: %i\n",i,j, arrays[i][j]);

}
}
}

关于c - 如何在双指针中返回 int 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52106691/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com