int (*pf)(int , char); //pf为一个函数指针,它所指向的函数的返回值是int,2个参数一个是int类型一个是char类型
#include <stdio.h>
void PrintMin(int a, int b)
{
if(a < b)
printf("%d",a);
else
printf("%d",b);
}
int main()
{
void(* pf)(int, int);
int x = 4, y = 5;
pf = PrintMin;
pf(x,y);
return 0;
}
//pf指针指向PrintMin
void qsort(void *base, int nelem, unsigned int width, int(* pfCompare)(const void*,const void*));
//base:待排序数组的起始地址
//nelem:待排序数组的元素个数
//width:待排序数组的每个元素的大小(以字节为单位)
//pfCompare:比较函数的地址
//pfCompare:函数指针,它指向一个“比较函数”,该比较函数的形式如下
//int 函数名 (const void * elem1,const void * elem2);
//比较函数是程序员自己编写的
#include <stdio.h>
#include <stdlib.h>
int MyCompare(const void * elem1,const void * elem2)
{
unsigned int * p1, * p2;
p1 = (unsigned int *) elem1; //"*elem1" 非法,编译器不知道void指针指向的元素有多少个字节
p2 = (unsigned int *) elem2; //"*elem2" 同上
return (*p1 % 10) - (*p2 % 10);
}
#define NUM 5
int main()
{
unsigned int an[NUM] = (8,123,11,10,4);
qsort(an,NUM,sizeof(unsigned int),MyCompare);
for(int i=0;i<NUM;i++)
printf("%d",an[i]);
return 0;
}