谎言下的婚姻 丁芸:typedef struct !

来源:百度文库 编辑:偶看新闻 时间:2024/05/05 00:44:19
  之前对这个东西一直有点含糊不清,很烦...终于彻底搞懂了:https://stackoverflow.com/questions/612328/difference-between-struct-and-typedef-struct-in-c。这是一个老的C语言的遗留问题
 typedef struct 的用法是在C语言中!若struct node {}这样来定义结构体的话。在申请node 的变量时,需要这样写,struct node n;(不用typedef的话必须这样定义变量)
若用typedef,可以这样写,typedef struct node{}NODE; 。在申请变量时就可以这样写,NODE n;
这是C语言的语法规定。即是说 NODE是struct node的一个别名,代表这个类型。同理,“typedef struct node{} *pNODE;”中pNODE是struct node*的一个别名,表示指向结构体node类型的指针类型,“pNODE pnode;”当然在定义的时候可以省去node,typedef struct {} NODE。  在C++中完全没有这么复杂!C++中结构体是完全看做类的(用类的方法来使用)。例如:struct node {};  定义对象时:node n;  定义指向node的指针时:node* pnode; 在C++中如果使用上述C的语法(基本不用这些)会有所不同:
struct Student
{
int a;
}stu1;//stu1是一个变量
typedef struct Student2
{
int a;
}stu2;//stu2是一个结构体类型
使用时可以直接访问stu1.a
但是stu2则必须先 stu2 s2;