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