• 指向函数的指针


    (一)函数指针

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

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

    小例子,取最大值

    #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
    ",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
    ");
    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
    ",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 }
    务实,说实话!
  • 相关阅读:
    测试Hibernate的DAO方法
    MyBatis 一对一关系映射
    MyBatis 实现基本CRUD操作
    配置日志框架——Log4j
    MyBatis 基础配置
    Hibernate与 MyBatis的比较
    关于用JSON拼凑出来的DOM对象的操作以及EasyUI的提交方式
    Struts2 单例与多例
    SpringMVC rest风格的url
    SpringMVC 控制器之对ServletAPI的支持与对JSON的支持
  • 原文地址:https://www.cnblogs.com/xtuxiongda/p/8271085.html
Copyright © 2020-2023  润新知