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]; }
时间: 2023-11-04 16:04:30 浏览: 45
这段代码是用作 `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) { int *pp1 = *(int **)p1; int *pp2 = *(int **)p2; return pp1[0] >pp2[0]; }
这段代码是一个用于比较两个整数数组的排序函数。它使用了C语言中的qsort函数来进行排序。在这个函数中,p1和p2是指向待比较元素的指针,它们被强制转换为指向int型指针的指针。通过对这些指针进行解引用和类型转换,我们可以获得指向实际整数数组的指针pp1和pp2。
然后,通过比较pp1和pp2指向的数组的第一个元素,函数返回一个整数值来表示它们的大小关系。如果pp1[0]大于pp2[0],则返回一个正值;如果pp1[0]小于pp2[0],则返回一个负值;如果pp1[0]等于pp2[0],则返回0。
这个排序函数可以用于对二维整数数组按照第一列元素进行升序排序。
int my_cmp(const void* p1,const void* p2) { return *(int*)p1 - *(int*)p2; }
int my_cmp(const void* p1,const void* p2) { return *(int*)p1 - *(int*)p2; } 是一个比较函数,用于在排序时确定元素的顺序。
在这个函数中,它比较p1和p2指向的整型数据的值。如果p1指向的值小于p2指向的值,则返回一个负数;如果p1指向的值大于p2指向的值,则返回一个正数;如果p1指向的值等于p2指向的值,则返回0。这个比较函数在qsort函数中被调用,用于确定元素之间的顺序,最终实现整型数组的排序。
如果您想在自己的代码中使用这个比较函数来排序整型数组,您可以按照以下步骤进行操作:
1. 声明整型数组,并初始化数组元素。
2. 调用qsort函数,传入数组的起始地址、数组的长度、每个元素的大小以及my_cmp函数的地址作为参数。
3. 遍历排序后的数组,输出排序结果。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [【指针进阶(2)】||【函数指针、函数指针数组、回调函数】重点剖析+代码详解](https://blog.csdn.net/m0_57987831/article/details/118073204)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *3* [回调函数](https://blog.csdn.net/qq_45407664/article/details/102590991)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]