【问题标题】:Qsort compare functionQsort比较函数
【发布时间】:2014-10-10 07:31:35
【问题描述】:
void qsort (void* base, size_t num, size_t size,
    int (*compare)(const void*,const void*));

当比较函数是 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/

【问题讨论】:

  • 它不需要int *

标签: c++ compare qsort


【解决方案1】:

它不是返回int *,而是返回intcompare 是一个函数指针。您在那里看到的* 将其定义为函数指针。 (注意*compare 周围的括号。)

cdecl解析int (*compare)(const void*,const void*))

将比较声明为指向函数的指针(指向 const void 的指针,指向 const void 的指针)返回 int

如果它是一个指向返回int *的函数的指针,这就是参数声明:

int * (*compare)(const void*,const void*))

如果您的代码没有编译,那是因为其他原因。如果您需要有关编译器错误的更具体建议,请考虑将错误消息添加到您的问题(或创建一个新问题)。

【讨论】:

猜你喜欢
  • 2018-03-26
  • 2018-09-14
  • 1970-01-01
  • 2019-04-27
  • 2021-08-04
  • 2021-10-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多