gpt4 book ai didi

c - 在函数 ( C ) 中使用 main 中的数组

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

有没有办法在另一个函数中使用在 main() 中定义的静态数组,而不将其作为参数提供给该函数?

例如:

main() 已经定义了数组:

int Array[10];

用整数填充。我想为 qsort 创建一个比较函数,它必须有这个标题:

int compar (const void* a, const void* b);

我希望它这样决定:

if Array[a]<Array[b] return 1

等...

这个数组不能直接给qsort,但是需要精确排序。

另外,这个数组必须是静态的(没有重新分配)。

有没有人有什么想法?

最佳答案

当然,唯一的方法是将数组的地址作为全局变量提供。

即使数组本身在 main() 中也是可能的,但是您必须将全局初始化为适当范围的地址,当然还要注意生命周期。

int *mains_array;

static int qsort_callback(const void *a, const void *b)
{
/* use mains_array */
}

int main(void)
{
int secret_array[100];

mains_array = secret_array;
qsort(something, something, qsort_callback);
}

这是一个非常丑陋的解决方案,应该多加考虑。

关于c - 在函数 ( C ) 中使用 main 中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19977574/

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