函数指针

来源:互联网 发布:ue软件查看内码 编辑:程序博客网 时间:2024/06/16 13:41
定义形式 

类型名 (* 指针变量名)(参数类型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则是每个元素的大小,最后一个参数则是自己可以定义的一个比较规则的函数指针。

这里之所以要用到函数指针就是为了达成能够自主定义的效果。

原创粉丝点击