关于一道C++编程内容中的疑问

#include<iostream>//#include<stdlib.h>//一、这行有什么用的?using namespace std;int cmp(const void* a,const void* b){ int x, y; x=*(int*)a; y=*(int*)b;/*二、这行是什么意思?麻烦尽量详细点!*/ return x-y;}int main(){ int x[4]={5,2,4,1},i; qsort(x,4,sizeof(int),cmp); for(i=0;i<4;i++) cout<<x[i]<<" "; cout<<endl; return 0;}qsort(x,4,sizeof(int),cmp); 这行又怎么解释?
2026年09月17日 23:41
有4个网友回答
网友(1):

一.我用过这几个stdlib.h中的函数:atoi itoa qsort malloc free exit rand 二.就是把指针ab转换成整型指针再取该指针指向的整型值 这是qsort的固定用法 多用用就熟了
总之cmp函数就是等于返回0 大于返回正正整数 小于返回负整数 这是qsort固定用法 记住就行了

网友(2):

//#include//一、这行有什么用的?
这一行如果没有//的话是使用C的标准输出输入头文件
x=*(int*)a; y=*(int*)b;这一句是a是无类型指针,用(int*)强制转换成整形指针,再前面一个*是,指向这个指针的地址,也就是值,说简单点就是把a指针所指的数据赋给x,y=*(int*)b和前面说的相同。
-------------------------------------
qsort(x,4,sizeof(int),cmp);是对x数组进行排序

网友(3):

因为 void*所以a是无类型指针。后面强制定义了~~

网友(4):

一、是一行注释.如果没有//的话是使用C语言的标准库
二、对a进行强制类型转换,并赋值给x.
(int*)a//将a转换成int*型指针
*(int*)a//整型指针(int*)a指向的值.
x=*(int*)a//把a当作整型指针那样使用,其指向的值赋给x
这种转换是C语言风格的旧式转换(不安全)
三、qsort是排序函数.前三个参数不用多说.而最后一个参数是一个函数(的名字).它使用时相当于一个指向函数的指针.参考C++ Primer中文第四版, 指向函数的指针(第七章第九节,237页).