首页 > 学院 > 开发设计 > 正文

qsort问题

2019-11-06 08:26:05
字体:
来源:转载
供稿:网友
#include<stdio.h>#include<stdlib.h>#include<time.h>int compare(const void* left,const void* right){	int *p0=(int*)left;//因为定义为void,编译//器不知道指向函数的字节,非法的,所以加///上int,强制类型转换	int *p1=(int*)right;	return *p0-*p1;//比较函数编写规则:(qsort认为)//1.如果*left应该排在*right前,则函数返回值是负函数//2.如果*left应该排在*right后,则函数返回值是正函数//3.如果*left,*right无所谓,则函数返回值是零}int sum(int x,int y){	return x+y;}int main(){	int i;	int a[10];	int (*p)(int,int);	p=sum;	PRintf("sum number is %d/n",(*p)(3,5));	srand(time(NULL));//随机数的输入	for(i=0;i<10;i++)	{		a[i]=rand()%100;	}	qsort(a,10,sizeof(int),compare);	//qsort(a,10,sizeof(int),Compare);在这个调用中,a传递的是a[10]的首地址,10传递的是a[10]数据的个数,Compare传递的是int Compare(const void *elem1, const void *elem2)这个函数的地址,也就是Compare把函数的地址给了qsort,qsort在调用的时候通过Compare的地址来调用的。所以不用给Compare传递参数。	for(i=0;i<10;i++)	{		printf("random number is %d/n",a[i]);	}	system("pause");	}
上一篇:hdu 1238

下一篇:CC2640R2F之SDK下载安装

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表