C语言typedef与复杂函数声明问题的深入解析

 更新时间:2013年07月31日 09:34:24   作者:  
以下是对C语言中的typedef与复杂函数声明问题进行了详细的分析介绍,需要的朋友可以过来参考下

下面是三个变量的声明,我想使用typedef分别给它们定义一个别名,请问该如何做?
>1:int *(*a[5])(int, char*);
>2:void (*b[10]) (void (*)());
>3. doube(*)() (*pa)[9];

答案与分析:
对复杂变量建立一个类型别名的方法很简单,你只要在传统的变量声明表达式里用类型名替代变量名,然后把关键字typedef加在该语句的开头就行了。

>1:int *(*a[5])(int, char*);
//pFun是我们建的一个类型别名
typedef int *(*pFun)(int, char*);
//使用定义的新类型来声明对象,等价于int* (*a[5])(int, char*);
pFun a[5];
a是一个包含5个元素的数组,数组的元素是函数指针,该函数指针所指函数的的返回值是指向int类型的指针,输入参数有两个,第一个是int,第二个是char*

>2:void (*b[10]) (void (*)());
//首先为上面表达式红色部分声明一个新类型
typedef void (*pFunParam)();
//整体声明一个新类型
typedef void (*pFun)(pFunParam);
//使用定义的新类型来声明对象,等价于void (*b[10]) (void (*)());
pFun b[10];
b是一个含有10个元素的数组,每个元素都是一个函数指针,该函数指针所指的函数的返回值为void,输入参数为另一个函数指针,这个函数指针没有输入参数,返回值为void

>3. doube(*)() (*pa)[9];
//首先为上面表达式红色部分声明一个新类型
typedef double(*pFun)();
//整体声明一个新类型
typedef pFun (*pFunParam)[9];
//使用定义的新类型来声明对象,等价于doube(*)() (*pa)[9];
pFunParam pa;

pa是个指针,指针指向一个含有9个元素的数组,数组的元素是一个函数指针,函数指针所指函数没有输入参数,返回值为double

相关文章

  • C++基于人工智能搜索策略解决农夫过河问题示例

    C++基于人工智能搜索策略解决农夫过河问题示例

    这篇文章主要介绍了C++基于人工智能搜索策略解决农夫过河问题,简单描述了农夫过河问题的概念、实现原理并结合具体实例形式给出了C++使用人工智能搜索策略解决农夫过河问题的相关操作技巧,需要的朋友可以参考下
    2017-12-12
  • QT编写窗口插件实现调用窗口的自适应

    QT编写窗口插件实现调用窗口的自适应

    这篇文章主要为大家详细介绍了QT编写窗口插件实现调用窗口的自适应,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • C语言实现简易版扫雷的完整过程

    C语言实现简易版扫雷的完整过程

    这篇文章主要给大家介绍了关于利用C语言如何实现简易版扫雷的完整过程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • c++函数指针使用示例分享

    c++函数指针使用示例分享

    这篇文章主要介绍了c++函数指针使用示例,需要的朋友可以参考下
    2014-03-03
  • 二叉搜索树源码分享

    二叉搜索树源码分享

    这篇文章主要介绍了二叉搜索树源码,需要的朋友可以参考下
    2014-04-04
  • C/C++ 中extern关键字详解

    C/C++ 中extern关键字详解

    这篇文章主要介绍了C/C++ 中extern关键字详解的相关资料,需要的朋友可以参考下
    2017-06-06
  • 深入理解C语言指针

    深入理解C语言指针

    关于指针,其是C语言的重点,C语言学的好坏,其实就是指针学的好坏。其实指针并不复杂,学习指针,要正确的理解指针
    2020-02-02
  • 单元测试代码覆盖率解析

    单元测试代码覆盖率解析

    单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。动态分析就是通过观察软件运行时的动作,来提供执行跟踪,时间分析,以及测试覆盖度方面的信息。下面我们来详细了解下吧
    2019-06-06
  • OpenCV实现彩色照片转换成素描卡通片

    OpenCV实现彩色照片转换成素描卡通片

    这篇文章主要为大家详细介绍了OpenCV实现彩色照片转换成素描卡通片,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • 推荐几款C/C++的编译器、编译环境(非常全面的比较)

    推荐几款C/C++的编译器、编译环境(非常全面的比较)

    这篇文章主要介绍了C/C++编译器的一些易混淆概念,这里脚本之家小编特为大家分享一下,需要的朋友可以参考下
    2021-06-06

最新评论