• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C语言typedef与复杂函数声明问题的深入解析

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

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了可以用typedef声明,c语言typedef,c语言typedef的用法,c语言typedef struct,c语言中typedef用法等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

下面是三个变量的声明,我想使用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

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

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

相关文章

  • 2017-05-28C语言统计字符个数代码分享
  • 2017-05-28解析C++中不能重载为友元函数的四个运算符
  • 2017-05-28用typedef定义类型的总结分析
  • 2017-05-28C++基于递归和非递归算法判定两个二叉树结构是否完全相同(结构和数据都相同)
  • 2017-05-28APUE笔记之:进程环境详解
  • 2017-05-28C语言单向链表的表示与实现实例详解
  • 2017-05-28深入详解C编写Windows服务程序的五个步骤
  • 2017-05-28C语言小程序 如何判断三角型类型
  • 2017-05-28VC中SDK与MFC的区别浅析
  • 2017-05-288皇后问题的解法实例代码

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 关于双向链表的增删改查和排序的C++实现
    • C++多文件变量解析
    • 深入解析C++中的mutable关键字
    • C语言采用文本方式和二进制方式打开文件的区别分析
    • C++进程共享数据封装成类实例
    • 用C语言模仿Python函数的一种简单实现方法
    • C++采用ring3读取MBR实例
    • C++ 算法之希尔排序详解及实例
    • C++类中的static和const用法实例教程
    • 深入剖析Android中init进程实现的C语言源码

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有