gpt4 book ai didi

c - 一个返回 n 维数组的 C 函数的原型(prototype)声明会是什么样子?

转载 作者:行者123 更新时间:2023-12-04 06:06:05 29 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Declaring a C function to return an array

(5 个回答)


8年前关闭。




返回 n 的 C 函数的原型(prototype)声明是什么样的?维数组?

在这里,n>=2 .

请用动态数组/指针解释它。

我的想法是不传递任何维数组。

请用 2 给我 3 个示例, 34方面。

这足以让我捕获这个想法。

最佳答案

我建议这样做:

array foo();

在哪里 array是一个结构体,定义为:
struct array
{
int *data;
unsigned int ndim; //number of dimensions
unsigned int *size; //size of each dimension is size[i].
};

当然, data只是指向 int 的指针,但结构中的其他两个字段可以这样使用,即 data可以解释为 n维数组,每个维的大小可以存储在 size这是另一个指针。

例如,以 4 维数组(维数为 10203040 ),则可以创建并初始化 4D 数组为:
unsigned int size[] = {10,20,30,40};
array arr = create(4, size);

在哪里 create函数定义为:
array create(unsigned int n, unsigned int *size)
{
array arr;
arr.ndim = n;
arr.size = (unsigned int*) malloc(n * sizeof(unsigned int));
int i;
unsigned int totalElements = 1;
for( i = 0 ; i < n ; ++i)
{
arr.size[i] = size[i];
totalElements *= size[i];
}
arr.data = (unsigned int*) malloc(totalElements * sizeof(int));
return arr;
}

当然,您必须对结构的字段进行大量工作,以使其看起来像 n 维数组。您不需要完全按照我解释的方式跟随我,但这只是一个基本概念。您可以对其进行修改,以满足您的特定需求。

我建议您编写几个函数来操作数组并访问数组元素。我写过 create函数,这里也是 destroy功能:
void destroy(array arr)
{
if (arr.size != NULL && arr.data != NULL)
{
free(arr.size);
free(arr.data);
arr.size = arr.data = NULL;
}
}

关于c - 一个返回 n 维数组的 C 函数的原型(prototype)声明会是什么样子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8338079/

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