使用qsort对2D数组进行排序 - 纠正类型转换

时间:2015-10-08 08:53:49

标签: c++ c arrays pointers qsort

我遇到了使用c ++ qsort比较函数来正确地按字母顺序排序2d数组的问题。我已经在这里阅读了许多类似的问题,但没有成功。在进行自定义比较功能时,其参数采用

的形式
int compar (const void* p1, const void* p2)

现在,我知道它的参数是我的变量的指针,每个变量都指向我的数组的一行。我想用常规的方式对我的数组进行索引和比较,使用类似下面的方法。

if(p1[0] <= p2[0]) {...}

因为我知道,格式

p1[i]

只是指针算法的一个快捷方式,我想当我收到一个参数“指向指向int的指针”时,我应该用这种方式进行类型转换并使用它:

if(*(int**)p1[0] <= *(int**)p2[0]) {...}
然而,

编译器给了我很多这些错误

main.cpp:8:20: error: ‘const void*’ is not a pointer-to-object type
main.cpp:8:37: warning: pointer of type ‘void *’ used in arithmetic  [-Wpointer-arith]

我的问题是,如何正确地对此进行类型转换,因此它可以让我比较我的行。另外,我想了解一下,我在这里做错了什么,以避免将来发生这些与指针相关的错误。

0 个答案:

没有答案