欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

指向函数的指针

程序员文章站 2022-06-22 12:27:49
(一)函数指针 定义:如果在程序中定义了一个函数,在编译时,编译系统为函数代码分配一段存储空间,这段存储空间的起始地址称为这个函数的指针。 (二)使用函数指针变量调用函数 小例子,取最大值 可见,定义指向函数的指针变量的一般格式类型名 (*指针变量名)(函数参数列表)int (*p) (int ,i ......
(一)函数指针

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

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

小例子,取最大值

#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 %d\n",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,3\n");
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("%d\n",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 }