定义形式
类型名 (* 指针变量名)(参数类型1, 参数类型2,…)
例如: int (*pf)(int ,char);
表示pf是一个函数指针,它所指向的函数,返回值类型应是int, 该函数应有两个参数,第一个是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(x,y);
return 0;
}
举个栗子
C语言快速排序库函数:
void qsort(void *base, int nelem, unsigned int width, int ( * pfCompare)( const void *, const void *));
其中绿色标亮部分很明显就是一个函数指针
要对数组进行排序
对数组排序,需要知道:
1) 数组起始地址
2) 数组元素的个数
3) 每个元素的大小(由此可以算出每个元素的地址)
4) 元素谁在前谁在后的规则
其中,参数 base指针指向数组起始位置,参数nelem给出了元素个数,width则是每个元素的大小,最后一个参数则是自己可以定义的一个比较规则的函数指针。
这里之所以要用到函数指针就是为了达成能够自主定义的效果。