我的目标是使用qsort from stdlib.h。qsort需要一个比较函数参数来实现以下功能:
int (*compar)(const void *, const void*)
我把它理解为“指向返回函数f.f的int的指针必须带两个泛型指针的参数”是对的吗?我不确定“*compar”周围括号的意思,我可以查一下这个名称吗?
该链接提供了一个示例:
int cmpfunc (const void * a, const void * b)
{
return ( *(int*)a - *(int*)b );
}
当a的值被转换为指向整数的指针后,我是否可以将a读作“解引用a”?
干杯。
最佳答案
我把它理解为“指向返回函数f.f的int的指针必须带两个泛型指针的参数”是对的吗?
完全正确。
我不确定*compar
周围括号的含义。
这是声明函数指针(称为“函数指针”)的语法。如果没有parens,它将是一个函数声明
// Declares a function named compar. (It returns an int*.)
int *compar(const void *, const void*);
// Declares a function pointer named compar. (The func returns an int.)
int (*compar)(const void *, const void*);
当a的值被转换为指向整数的指针后,我是否可以将
*(int*)a
解读为“解引用a的值”?再次更正。它给出地址
int
处的a
。