zoukankan      html  css  js  c++  java
  • typedef void(*Fun)(void);

    typedef void(*Fun)(void);   

    函数类似于数组,函数名就是它的首地址;
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    int i;             // 定义了一个int类型的变量i; 而这样
    typedef INT int;   // 表示用户自己定义了一个整型数据类型INT,实际上就等同于int 所以:INT ii;
                       // 表示定义了一个int类型的变量ii;  
    void (*pFn)(void)  // 定义了一个函数指针,该函数指针指向类似于void Foo(void)函数的函数入口地址 
    typedef void (*Fun)(void
                       // 表示用户自己定义了一个函数指针数据类型 
    Fun pf;            // 表示定义了一个函数指针pf,改函数指针指向类似于void   *pf(void)的函数  //leo 
    char *a="This is ";// 这个在常量区分配一个空间,然后a指向此空间
    char a[] = "This is";
                       // 这个在常量区分配一个空间,然后又在栈上分配一个空间,将常量区的内容复制过来,所以可以修改
    /* //////////定义一个函数指针类型/////////// */
    //比如你有三个函数:
    void hello(void) { printf("你好!"); }
    void bye(void) { printf("再见!"); }
    void ok(void) { printf("好的!"); }
     
    typdef void (*funcptr)(void);
                       // 这样就构造了一个通用的函数;你用的时候可以这样:
    void speak(int id)
    {
       funcptr words[3] = {&hello, &bye, &ok};
       funcptr fun = words[id];
       (*fun)();
    }
     
    这样的话,如果speak(0)就会显示“你好!”
    speak(1)就会显示“再见!”
    speak(2)就会显示“好的!”
     
    用于处理参数和返回值的形式都一样,但是功能不确定的一组函数,可以使用函数指针
    比如算术运算符,加、减、乘、除,都可以用typedef int (*calc)(int,int)代表,等等
  • 相关阅读:
    200行代码实现Mini ASP.NET Core
    使用Elastic APM监控你的.NET Core应用
    .NET西安社区「拥抱开源,又见 .NET:壹周年Party」活动简报
    西安7月21日「拥抱开源,又见.NET:壹周年Party」线下交流活动
    领域驱动设计(DDD)编码实践
    再谈领域驱动设计
    「拥抱开源, 又见 .NET」系列第三次线下活动简报
    西安活动 | 4月20日「拥抱开源,又见.NET :云时代 • 新契机」
    在Xunit中使用FsCheck
    rocketMq特性(features)
  • 原文地址:https://www.cnblogs.com/defen/p/4395060.html
Copyright © 2011-2022 走看看