(一)函数指针

定义:如果在程序中定义了一个函数,在编译时,编译系统为函数代码分配一段存储空间,这段存储空间的起始地址称为这个函数的指针。

(二)使用函数指针变量调用函数

小例子,取最大值

#include<stdio.h>
int main(){
    int max(int x,int y);
    int (*p)(int,int);   //定义指向函数的指针变量p 
    int a=0,b=0,c=0;
    p=max;
    scanf("%d%d",&a,&b);
    printf("%d %dn",a,b);
    c=(*p)(a,b);    //通过指针变量调用max函数 
    printf("%d",c);
}

int max(int x,int y){
    int z;
    if(x>y) z=x;
    else z=y;
    return(z);
}

可见,定义指向函数的指针变量的一般格式
类型名 (*指针变量名)(函数参数列表)
int (*p) (int ,int)p是指向函数的指针变量,它只能指向函数的入口而不能指向函数中间的某一条指令

(三)指向函数指针作参数

小例子,用户输入两个数a,b  当用户输入1时,取两个数的最大值;当用户输入2时,取两个数的最小值;当用户输入3时,取两数之和

定义一个fun函数,每次只要将不同的函数名作为实参将其入口地址传送给fun函数中的形参(即指向函数的指针变量)

 1 #include<stdio.h>
 2 int main(){
 3     int fun(int x,int y,int(*p)(int,int));  //fun函数声明 
 4     int max(int,int);
 5     int min(int,int);
 6     int add(int,int);
 7     int a,b,n;
 8     scanf("%d%d",&a,&b);
 9     printf("选择1,2,3n");
10     scanf("%d",&n);
11     if(n==1) fun(a,b,max);  //输入1时调用max函数 
12     else if(n==2) fun(a,b,min);  //输入2时min函数 
13     else if(n==3) fun(a,b,add);  //输入3调用add函数 
14     return 0; 
15 } 
16 int fun(int x,int y,int (*p)(int,int)){
17     int result;
18     result=(*p)(x,y);
19     printf("%dn",result);
20 }
21 int max(int x,int y){ //取最大值
22     int z;
23     if(x>y) z=x;
24     else z=y;
25     return(z);
26 }
27 int min(int x,int y){  //取最小值
28     int z;
29     if(x<y) z=x;
30     else z=y;
31     return(z);
32 }
33 int add(int x,int y){  //求两数之和
34     int z;
35     z=x+y;
36     return(z);
37 }

 

内容来源于网络如有侵权请私信删除
你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!