void qsort (void* base, size_t num, size_t size,
int (*compare)(const void*,const void*));当compare函数是int类型时,为什么qsort函数需要int*返回类型进行比较?
int compare (const void * a, const void * b)
{
if ( *(MyType*)a < *(MyType*)b ) return -1;
if ( *(MyType*)a == *(MyType*)b ) return 0;
if ( *(MyType*)a > *(MyType*)b ) return 1;
}有没有人能解释一下这个,我的程序不能编译。谢谢!取自此源代码的代码:http://www.cplusplus.com/reference/cstdlib/qsort/
发布于 2014-08-17 09:15:51
它返回的不是int *,而是int。compare是一个函数指针。您在那里看到的*将其定义为函数指针。(请注意*compare周围的括号。)
int (*compare)(const void*,const void*))的cdecl解析
声明compare为指向函数的指针(指向常量空的指针,指向常量空的指针),返回int
如果它是指向返回int *的函数的指针,则这将是参数声明
int * (*compare)(const void*,const void*))如果你的代码没有编译,那是因为其他一些原因。如果您需要有关编译器错误的更具体建议,请考虑将错误消息添加到您的问题中(或创建新问题)。
https://stackoverflow.com/questions/25345468
复制相似问题