typedef int (init_fnc_t) (void)和typedef int (*init_fnc_t) (void)
2024-09-06 11:26:57
1、typedef int (init_fnc_t) (void);表示定义init_fnc_t为函数类型,该函数返回int型,无参数。
而“init_fnc_t *init_sequence[]={ cpu_init, board_init }”表示用init_fnc_t(函数类型)去定义一个一维指针数组,数组中的元素都是指针变量,而且都是指向函数的指针,这些函数返回值都是int型,无参数的。更明朗的说就是数组中的每个元素是用来存放函数入口首地址的。
2、int (*init_fnc_t) (void);表示定义一个函数指针(返回值为int型,无参数的函数指针,存放的是函数的首地址),typedef int (*init_fnc_t) (void);表示定义一个函数指针类型,即可以直接用init_fnc_t这个符号去定义函数指针,“init_fnc_t init_sequence[]={cpu_init, board_init }”表示用init_fnc_t(函数指针类型)去定义一个数组,数组里面的元素都是一个函数指针,cpu_init, board_init 都是函数指针,存放的都是函数的首地址。
综上的分析,我个人觉得这两个定义的意思是一样的只是写法不一样而已,1中的数组元素是指向函数的指针变量,2中的数组的元素是函数指针。因此得到的结果是一样的。
说实话,typedef的用法真的挺变态,一部小心会让你掉入陷阱!!!不过能够用好typedef并深刻理解他的内涵,我觉得个人的C语言能力会是一个大提高!
最新文章
- 【转】Django Model field reference学习总结
- python 引用传递与值传递
- 1Z0-053 争议题目解析690
- javascript获取当前时间
- [转]CISP(注册信息安全专业人员)认证(12天)
- Java中的Timer和TimerTask在Android中的用法(转)
- linux下git的安装和使用(转)
- 本地安装discuz
- Python爬虫预备知识
- nodejs微信开发获取token,ticket-1
- js bool true false 比较
- php---tp框架---表单验证
- Android学习笔记-Adapter基础讲解
- C#复习资料
- LoadRunner 中实现MD5加密
- eclipse的注释
- python——re模块
- hackrf入门
- 移动电力猫HG260GT pon实现路由拨号
- 雷林鹏分享:jQuery EasyUI 树形菜单 - 创建基础树形网格