gpt4 book ai didi

c - 当返回类型为 int * 时返回 int 数组

转载 作者:太空宇宙 更新时间:2023-11-04 02:27:23 25 4
gpt4 key购买 nike

我有一个这样描述的函数

int * oddNumbers(l, r, int* result_size){
static int res[r-l];
int index = 0;
while(l < r){
if(l % 2 != 0){
res[index] = l;
index++;
}
l++;

}
result_size = &index;
return res;
}

这是我被要求解决的问题。我不明白的是如何返回一个整数数组。我已经查找了多种方法来做到这一点。声明变量静态,并为变量分配内存。

我知道这样做的行业方法是允许调用者为返回值分配内存。但是,不幸的是,我无法访问程序的那一部分,只有这个功能。

如有任何帮助,我们将不胜感激。

最佳答案

这个问题通常通过动态内存分配来解决。

在极少数情况下,当您无法访问 malloc/free 时,您可以滚动自己的内存分配器。这是一个“仅分配”示例,它生成指向特定预分配限制的指针:

#define MAX_SIZE 65536

int * oddNumbers(int l, int r, int* result_size){
static int raw[MAX_SIZE];
static int* current = raw;
int size = r-l;
// Make sure that allocation size is positive
if (size <= 0) {
return NULL;
}
// Make sure we have enough available memory remaining in raw[]
ptrdiff_t available = &raw[MAX_SIZE] - current;
if (available < size) {
return NULL;
}
// Allocate "size" elements from raw
int *res = current;
current += size;
int index = 0;
while(l < r){
if(l % 2 != 0){
res[index++] = l;
}
l++;
}
return res;
}

关于c - 当返回类型为 int * 时返回 int 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49179002/

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