• typedef函数指针那些事


     首先来介绍下函数指针:

      函数指针是指向函数的指针变量,即本质是一个指针变量。 

    int (*f) (int x); /* 声明一个函数指针 */

     f=func; /* 将func函数的首地址赋给指针f */

    使用的时候可以直接通过(*f)(x)这样的形式。网上有很多的函数指针资料,就不多说了。

    当我们在函数指针前加上typedef,就变成什么样了呢?

    比如typedef  INT32  (*WNDPROC)(HWND, INT32, WPARAM, LPARAM);

    这条语句的意思是定义了一个类型WNDPROC,这个类型的对象是一个函数的指针,函数的返回值为INT32,参数类型为HWND, INT32, WPARAM, LPARAM。

    举个例子:

     

    1. typedef char (*PTRFUN)(int);   
    2. PTRFUN pFun;   
    3. char glFun(int a)
    4.    printf("%d ",a);
    5.    return;
    6. }   
    7. void main()   
    8. {   
    9.     pFun = glFun;   
    10.     pFun(2);   

     

     程序结果打印2出来。

    typedef的作用相当于给函数起了个别名,在某些情况下有利于代码简化,跨平台调用。

    比如你用typedef定义了一个函数指针,而程序中有很多同一类型的函数(即函数返回和参数类型一致,但是作用和功能不同),

    我们可以将函数的地址复制给指针,通过调用指针来调用函数,在一定的代码架构上简化了代码(比如针对不同的情况调用同

    一类型的函数,我们只要针对每一种情况赋值,而不用针对每一种情况去调用一种函数)。

     

     

  • 相关阅读:
    java基础 -- 经典排序
    java 基础 ----- Arrays 工具类
    java基础 ---- 二维数组
    java基础 ---- 一维数组
    java基础 ---- 练习for循环
    AI 偏微分方程
    AI 反向传播神经网络
    AI 判别式模型和生成式模型
    AI 隐含狄利克雷分布
    AI 朴素贝叶斯分类
  • 原文地址:https://www.cnblogs.com/hedengfeng/p/3850625.html
Copyright © 2020-2023  润新知