typedef的用法和复杂声明_第1页
typedef的用法和复杂声明_第2页
typedef的用法和复杂声明_第3页
typedef的用法和复杂声明_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

理解复杂声明 理解复杂声明可用 右左法则 从变量名看起 先往右 再往左 碰到 圆括号就调转阅读方向 括号内分析完后跳出括号 还是按先右后左的顺序 如此循环 直到整个声明分析完 举例 int a 10 变量名为 a 因为 的优先级比 高 所以先看 说明 a 是个数 组 该数组中有 10 个元素 在看左边 是 int 说明数组 a 中的每个元素都是 int 即 a 是一个指针数组 数组元素的类型是整型指针 int a 10 变量名为 a 因为 的优先级最高 所以先看 先往右看 没 有 再往左看 是 说明 a 是一个指针 跳出括号 先往右看 是 说明 a 是个指向数组的指针 再往左看 是 int 说明数组的每个元素都是整型 即 a 是一个指向数组的指针 数组中的每个元素都是整型 include using namespace std int main int i j int a 2 4 1 2 3 4 5 6 7 8 int p 4 a 指针 p 指向数组 a 的第一行 p 1 指向数组 a 的第二行 for i 0 i 2 i for j 0 j 4 j cout p i j cout endl return 0 int f f 是一个函数 返回一个整型值 int f f 是一个函数 返回一个整型指针 int f f 是一个函数指针 所指向的函数返回一个整型值 int f f 是一个函数指针 所指向的函数返回一个整型指针 int f f 是一个整型数组 int f f 是一个指针数组 数组元素的类型是整型指针 int f f 是指针 指向一个数组 数组元素为整型 int f f 是一个数组 数组元素类型为函数指针 所指向的函数返回 整型值 int f f 是一个指针数组 指针所指向的类型是返回值为整型指针的函 数 typedef 的用法 用途一 定义一种类型的别名 注意这并不是简单的宏变换 比如 char s1 s2 或者 define pStr char pStr s1 s2 上面两种形式的定义其实是 char s1 和 char s2 其中的 define 只是简单的 将字符串替换而已 如果我们用 typedef 则不一样 typedef char pStr pStr s1 s2 此时其实是 char s1 和 char s2 用途二 用在 C 语言中 帮助 struct 声明对象 首先我们看一下 struct 声明对象在 C 中和在 C 中的区别 我们定义一个结构体 struct tagPOINT int x int y 在 C 中 如果我们要声明一个对象 p1 比如写作 struct tagPOINT p1 而 在 C 中 则可以去掉 struct 写作 tagPOINT p1 接下来看一下 typedef 的作用 typedef struct tagPOINT int x int y POINT POINT p1 这样就比原来的方式少写了一个 struct 尤其在大量使用的时候 会比较省 事 或许在 C typedef 的这种用途并不是很大 但是理解了它 对掌握以前 的旧代码还是有帮助的 用途三 定义数组类型 例如 typedef int MyintArray 10 MyintArray a 相当于 int a 10 其实这种用法在 struct 也会用到 例如 typedef struct tagPOINT int x int y POINT POINT p2 其实相当于 struct tagPOINT p2 用途四 定义与平台无关的类型 比如定义一个叫 REAL 的浮点类型 在目标一平台上 让它表示最高精度的类型 typedef long double REAL 在不支持 long double 的平台二上 改为 typedef double REAL 在连 double 都不支持的平台三上 改为 typedef float REAL 也就是说 在跨平台时 只要改下 typedef 本身就行 不用对其他源代码做 任何修改 用途五 为复杂的声明定义一个新的简单的别名 方法是 在原来的声明里逐步用 别名替换一部分复杂声明 如此循环 把带变量名的部分留到最后替换 这样 得到的就是声明的最简化版 例如 int a 5 int char a 是一个包含 5 个元素的数组 数组的元素是函数指针 该函数指针所 指向函数的返回值是一个 int 型的指针 函数的形参有两个 第一个是 int 型 第二个是 char 型 变量名为 a 没有其他的复杂声明 pFun 是我们建立的一个类型别名 typedef int pFun int char 使用定义的新类型来声明对象 等价于 int a 5 int char 即用 a 5 来 替换 pFun pFun a 5 void b 10 void b 是一个含有 10 个元素的数组 数组的元素是函数指针 该函数指针所 指向的函数的返回值是 void 函数的形参是另一个函数指针 这个函数指针没 有形参 返回值为 void 变量名为 b 首先为表达式红色部分声明一个新类型 typedef void pFunParam 整体声明一个新类型 typedef void pFun pFunParam 使用定义的新类型来声明对象 等价于 void b 10 void pFun b 10 double pa 9 pa 是一个指针 指向一个含有 9 个元素的数组 数组的元素是一个函数 指针 函数指针所指向的函数没有形参 返回值是 double 型 变

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论