有什么方法可以在另一个函数中使用在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);
}
这是一个非常丑陋的解决方案,应该多加考虑。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句