函数指针
定义:
简单来说就是指向函数的指针,其返回值为指针类型。
声明格式为:类型说明符(*函数名)(参数)
int (*Find)(int n,int m);
特点:
指向函数的指针变量中储存的是一个函数在内存中的入口地址。
需要将一个函数的地址赋值给函数指针:
Find=(&)nation;
//取地址符可以省略
调用方法:
q = Find();
q = (*Find)();
函数指针在一些情况下使用可以更方便简洁
例如下面这个成绩升序降序例子(c语言版)
#include<stdio.h>
#define N 40
void Swap(*int a,*int b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}
int sheng(int a ,int b)
{
return a<b;
}
int jiang(int a ,int b)
{
return a>b;
}
int ReadScore(int score[])
{
int i=-1;
do{
i++;
scanf("%d",&score[i]);
}while(score[i]>=0);
return i;
}
void Selection(int b[],int n,int(*compare)(int a,int b))
{
int i,j,k;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if((*compare)(a[i],a[j]))
k=j;
}
if(k!=i)
Swap(&a[k],&a[i]);
}
}
voidPrintScore()
{
int i;
for(i=0;i<n;i++){
printf("%4d",score[i]);
}
printf("\n");
}
int main(void)
{
int score[N],n;
int order;
n=ReadScore(score);
scanf("%d",&order);
PrintScore(score,n);//排序前成绩
if(order==1){
Selection(score,n,sheng);
}
else
{
Selection(score,n,jiang);
}
PrintScore(score,n);//排序后成绩
return 0;
}