typedef的语法规则其实很简单,一句话来说就是定义对象的语法前加关键字typedef,剩下的不变,原本定义的对象标识符换成类型标识符, 对应语义从定义一个对象改成定义一个类型别名。typedef看起来复杂根本原因是对象定义的语法比较复杂,例如分隔符*和[]的用法。
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不再是对象名,而是类型名,即定义了一个类型别名bintnode,实际指的就是struct node这个完整的类型
typedef定义的类型名在作用域和定义的原类型语义上等价,都便是同一个类型名称。