C语言——辨识你见到的类型
来源:互联网 发布:工具书软件 编辑:程序博客网 时间:2024/05/16 08:17
辨识你见到的类型
———- android培训、java培训、期待与您交流! ———-
- 辨识你见到的类型
- 引入
- 追根溯源
- 总结规律
引入
首先看一下下面的声明
int *test1();int (*test2)();
对于上面的代码该如何理解?下面我给出正确答案:
- 返回指向int型指针名称为test1的函数。
- 指向返回int型数值的函数名称为test2的指针。
看名字是否有些绕?下面我们来分析一下:
*号是前置运算符,优先级比“()”低,以为要让我们所需要表达的意思准确传达,需要加上()让连接正确地进行。
呵呵!是否按照我上面的分析思考了呢?告诉你上面有误解哦。
要知道,在C的语法规则中,声明中的 “*” “[]”“()”都不是运算符 哦
这里的”*“号只是用来表示指针,而”()“用来表示括号内的是一个整体,具体该怎样读解,让我们继续往下探讨
追根溯源
说到底C语言是外国人创造出来的么,那人家肯定按照他们好理解的方式来进行书写的。比如说上面的:
int (*test2)();用英语表达为:
test2 is pointer to function returning int
翻译成中文就是: test2是 指向将要返回int类型值的函数的指针
好达成我们理解的效果了
总结规律
- 首先着眼于标识符(变量名或者函数名)。
- 从距离标识符最近的地方开始,依照优先顺序解释派生类型(指针、数
组和函数)。优先顺序说明如下,
①用于整理声明内容的括弧
②用于表示数组的 [] ,用于表示函数的 ()
③用于表示指针的 * - 解释完成派生类型,使用“ of ”、“ to ”、“ returning ”将它们连接起来。
- 最后,追加数据类型修饰符(在左边, int 、 double 等)。
- 英语不好的人,可以倒序用中文解释
PS:(上面这段总结出自《征服C指针》3.1.2节,本文实际上是对该文的观后感悟和学习总结)
这不是抄…这不是抄…用牛顿大哥的话叫站在巨人的肩膀上…不管你信不信反正我信了-.-!
应用一下看看:
int ( * func_p)(double);
首先着眼于标识符。
int ( * func_p)(double);
英语的表达为:
func_p is
因为存在括号,这里着眼于* 。
int ( * func_p)(double);
英语的表达为:
func_p is pointer to
解释用于函数的 () ,参数是 double 。
int ( * func_p)(double);
英语的表达为:
func_p is pointer to function( double ) returning
最后,解释数据类型修饰符 int 。
int ( * func_p)(double);
英语的表达为:
func_p is pointer to function( double ) returning int
- C语言——辨识你见到的类型
- 缓存类型?——我所见到的缓存
- 系统辨识char3_1——polyfit实现最小二乘辨识的原理
- 糟心的C++指针类型辨识
- 系统辨识char3_2——最小二乘辨识程序
- C中见到的一些函数记录
- 黑马程序员——小时候经常见到的乘法口诀
- 支持多种类型的栈——C语言实现
- C语言笔记——变量的存储类型
- C语言的角落(二)——你不一定知道的C语言特性
- 如何能见到你
- 很高兴见到你!
- c语言——枚举类型
- C语言——类型限定词
- C语言数据类型——结构类型
- C语言基础—变量类型
- Mohican_11/27 C语言—类型
- C语言的枚举类型
- 博客搬家了!!!
- andriod优化
- 解决方案 因为计算机同名,无法发现工作组内其他计算机。
- ubuntu 下运行lua
- UITableViewCell组合创建(React Native)
- C语言——辨识你见到的类型
- 大型网站系统架构的演化
- I 帧和 IDR 帧的区别
- 博客地址迁移
- 前端
- 资贤凡涌柏献凭锰彰闯奥荚账镀时
- HDOJ 2222 Keywords Search
- 基于IE内核的多标签浏览器开发过程
- 一小时完成MongoDB安装及Monk使用