gpt4 book ai didi

c - 使用 qsort 对二维数组进行排序时发出警告

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

我正在尝试使用 qsort 在 C 中对二维数组进行排序。排序有效,但我收到警告:

警告:初始化从指针目标类型中丢弃“const”限定符[默认启用]

如何修改我的比较函数以消除警告(假设 qsort 需要参数 const void *pa, const void *pb

int cmp (const void *pa, const void *pb ) {
const int (*a)[2] = pa; // warning here
const int (*b)[2] = pb; // warning here
if ( (*a)[1] < (*b)[1] ) return 1;
if ( (*a)[1] > (*b)[1] ) return -1;
return 0;
}

我读过 this post在 Stack Overflow 上,但我仍然不确定应该如何更改比较函数。

我有一个如下所示的数组:

int letterCount[26][2] = {{0, 0},{1, 0},{2, 0},{3, 0},{4, 0},{5, 0},{6, 0},{7, 0},{8, 0},{9, 0},{10, 0},{11, 0},{12, 0},{13, 0},{14, 0},{15, 0},{16, 0},{17, 0},{18, 0},{19, 0},{20, 0},{21, 0},{22, 0},{23, 0},{24, 0},{25, 0}};

除了在第二列中,不是用零填充,而是用其他数字填充。在填充 0 之后,我试图按第二列对这个二维数组进行排序。

最佳答案

你可以玩弄 decls,但最后我认为这对你正在使用的比较器来说已经足够了:

int cmp (const void *pa, const void *pb )
{
const int *a = pa;
const int *b = pb;
if (a[1] < b[1])
return -1;
return (b[1] < a[1]);
}

您的数据“项”只不过是二维数组中的 int[] 偏移量。如果这是一个指针数组而不是真正的二维数组,这将有很大的不同。 Grijesh 非常接近这个,只是缺少 [1] 偏移量(和简单的数学),如果他取消删除他的答案来修复它,我会放弃这个。

关于c - 使用 qsort 对二维数组进行排序时发出警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18947438/

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