typedef struct语法解释
来源:互联网 发布:全球大数据市场规模 编辑:程序博客网 时间:2024/06/05 17:08
C语言源代码:
typedef char datatype;typedef struct node{datatype data;struct node *lchild,*rchild;}bintnode;typedef bintnode *bintree;typedef struct{int front,rear;bintree data[queuesize];int count;}cirqueue;
解释说明:
typedef的语法规则其实很简单,一句话来说就是定义对象的语法前加关键字typedef,剩下的不变,原本定义的对象标识符换成类型标识符,对应语义从定义一个对象改成定义一个类型别名。typedef看起来复杂根本原因是对象定义的语法比较复杂,例如分隔符*和[]的用法。typedef struct node{datatype data;struct node *lchild,*rchild;}bintnode;对应的对象定义:struct node{datatype data;struct node *lchild,*rchild;}bintnode;去除bintnode来看就是一个类型struct node的完整描述。加上了bintnode来看,表示定义了一个struct node类型的对象bintnode。现在前面有typedef,因此这个bintnode不是对象名而是类型名。也就是定义了一个类型别名bitnode,实际上指的就是struct node这个完整类型。typedef定义的类型别名在作用域内和被定义的原类型语义上等价,都是表示同一个类型的名称。这里typedef之后bitnode可以和struct node互相代替(注意在C++中,如果同一命名空间内类型名和对象名没有重复,那么struct可以省略,struct node等价于node)。更复杂一点的:struct node{datatype data;struct node *lchild,*rchild;}bintnode, *bintree;注意定义对象时*修饰对象本身而不是修饰类型。因此这里定义了struct node对象bintnode和struct node*类型的对象bintree。对应的类型定义:struct node{datatype data;struct node *lchild,*rchild;}bintnode, *bintree;这里定义了类型别名bintnode表示完整类型struct node,以及bintree表示类型struct node*。拆开来就成了typedef struct node{datatype data;struct node *lchild,*rchild;}bintnode;typedef bintnode *bintree;这种写法看起来应该稍微清楚了一点。至于下面的cirqueue,和上面的bintnode类似,只是这里省略了结构体名称,是一个匿名类型。这样写的主要好处是类型名可以省略struct(C++里面不这样写也可以省略)。
- typedef struct语法解释
- typedef struct解释
- C/C++语法: struct & typedef struct用法详解
- typedef struct
- typedef struct
- typedef struct
- typedef struct
- Struct && typedef
- struct / typedef
- typedef struct
- typedef struct
- typedef struct
- typedef struct
- typedef struct
- C/C++语法知识:typedef struct 用法 作用
- C/C++语法知识:typedef struct用法详解
- C/C++语法知识:typedef struct 用法详解
- C/C++语法知识:typedef struct 用法详解
- Mysql 中delimiter的作用
- 获取UDID和UUID
- 学习pthread参考的资料
- CMake学习笔记
- MFC CFile类操作文件的方法
- typedef struct语法解释
- plist字段列表,很全
- wince版ffmpeg音视频播放器
- 缺页异常总结
- 对比:智能手机普及速度有多快?
- 启用firefox安全模式
- hdu1002 A + B Problem II
- C++到Java
- mysql重複記錄 操作