int cmp(const void *p1, const void *p2) { int *pp1 = *(int **)p1; int *pp2 = *(int **)p2; return pp1[0] >pp2[0]; }
时间: 2023-07-23 21:59:05 浏览: 63
这是一个用于比较两个指针所指向的整数数组的函数。函数使用了C标准库中的`qsort`函数进行排序。该函数接受两个指向常量指针的指针,这些指针最终会被强制转换为指向整数指针的指针。
在函数内部,`p1`和`p2`被转换为指向整数指针的指针`pp1`和`pp2`。然后,函数返回`pp1[0] > pp2[0]`的比较结果,即判断`pp1`指向的整数是否大于`pp2`指向的整数。
这个函数可以用于对整数数组进行升序排序。
相关问题
int cmp(const void *p1, const void *p2) { int *pp1 = *(int **)p1; int *pp2 = *(int **)p2; // 若身高相同,则按照k从小到大排列 // 若身高不同,按身高从大到小排列 return pp1[0] == pp2[0] ? pp1[1] - pp2[1] : pp2[0] - pp1[0]; }
这段代码是用作 `qsort` 函数的比较函数,用于对 `people` 数组进行排序。
函数中首先将参数 `p1` 和 `p2` 分别强制转换为 `int**` 类型,并且通过 `*(int **)` 取得了它们所指向的一维数组的指针。将这两个指针分别赋值给 `int*` 类型的指针 `pp1` 和 `pp2`。
接下来,代码使用三元条件运算符进行比较和返回结果。首先比较 `pp1[0]` 和 `pp2[0]`,即两个人的身高。如果身高相同,则按照 `k` 值(即 `pp1[1]` 和 `pp2[1]`)从小到大排列,返回 `pp1[1] - pp2[1]` 的结果。如果身高不同,则按照身高从大到小排列,返回 `pp2[0] - pp1[0]` 的结果。
这样,当调用 `qsort` 函数时,会根据这个比较函数的返回值来确定元素的顺序,从而实现对 `people` 数组的排序。排序的规则是:首先按照身高从大到小排列,若身高相同,则按照 `k` 值从小到大排列。
int cmp(const void* p1, const void* p2){ return *(int*)p1 - *(int*)p2;}
这是一个C语言函数,名为cmp,它接受两个指向void类型的指针作为参数(p1和p2)。这个函数的作用是比较通过这两个指针所指向的int类型的值,并返回它们之间的差。这里的*(int*)p1表示取p1所指向内存位置的int值,同理,*(int*)p2取p2指向的int值。如果第一个int大于第二个,返回正值;如果小于,则返回负值;相等则返回0。
阅读全文