把函数指针当做变量引用,输出两个数字的较小者
#include<stdio.h>
void Print_Min(int a,int b){
if(a<b)
printf("%d\n",a);
else
printf("%d\n",b);
}
int main(){
void (*pf)(int,int); // 声明函数指针变量
int x = 4,y = 5;
pf = Print_Min;
pf(x,y);
return 0;
}
void qsort(void base,int nelem,unsigned int width,int (pfCompare)(const void ,const void))
可以对任意类型的数组进行排序
按照个位数的大小从小到大排序,qsort函数应用是就是把自己编写的排序规则函数当做一个指针参数
#include<stdio.h>
#include<stdlib.h>
#define num 5
int MyCompare(const void *elem1,const void *elem2){
unsigned int *p1,*p2;
p1 = (unsigned int *)elem1;
p2 = (unsigned int *)elem2;
return (*p1 % 10) - (*p2 % 10);
}
int main(){
unsigned int a[num] = {12,5,56,23,87};
qsort(a,num,sizeof(unsigned int),MyCompare); // qsort
for(int i = 0;i <num;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}