读者:我想用 strcmp() 作为比较函数, 调用 qsort() 对一个字符串数组排序, 但是不行。
小林:你说的 “字符串数组” 实际上是 “字符指针数组”。...qsort 比较函数的参数是被排序对象的指针, 在这里, 也就是字符指针的指针。然而 strcmp() 只接受字符指针。因此, 不能直接使用 strcmp()。...读者:我想用 qsort() 对一个结构数组排序。我的比较函数接受结构指针,但是编译器认为这个函数对于 qsort() 是错误类型。我要怎样转换这个函数指针才能避免这样的警告?...sp1 = p1 和 sp2 = p2 的初始化中; 由于 p1 和 p2 都是 void 指针, 编译器隐式的进行了类型转换。...另一方面, 如果你对结构的指针进行排序, 你需要间接使用:sp1 = *(struct mystruct * const *)p1。一般而言, 为了让编译器 “闭嘴” 而进行类型转换是一个坏主意。