#include<stdio.h> #include <Windows.h> void swap(char* e1,char*e2,int width) { for(int i=0;i<width;i++) { char temp=*e1; *e1 = *e2; *e2=temp; e1++;e2++; } } int cmp_int(const void* e1,const void*e2) { return *(int*)e1-*(int*)e2; }//函数指针的定义 void my_qsort(void *base,int sz,int width,int(*cmp)(const void*e1, const void*e2))//int(*p)(void*e1,void*e2)函数指针 { for(int i=0;i<sz-1;i++) { for (int j=0;j<sz-1-i;j++) { if(cmp((char*)base+j*width,(char*)base+(j+1)*width)>0) { swap((char*)base+j*width,(char*)base+(j+1)*width,width); } } } } int main() { int arr[]={9,8,5,4,6,2,1,3}; int sz = sizeof(arr)/sizeof(arr[0]); //my_qsort(arr,sz,sizeof(arr[0]),cmp_int); qsort(arr,sz,sizeof(arr[0]),cmp_int);//函数指针的调用 for(int i=0;i<sz;i++) { printf("%d ",arr[i]); } printf("\n "); system("pause"); return 0; }
qsort函数指针的定义与调用
最新推荐文章于 2023-01-10 23:36:26 发布