typedef struct的用法

来源:网络整理 作者:2017年11月09日 17:20
关键词:typedefStruct
  typedef是类型定义的意思。typedef struct 是为了使用这个结构体方便。

  具体区别在于:

  若struct node{ }这样来定义结构体的话。在定义 node 的结构体变量时,需要这样写:struct node n;   若用typedef,可以这样写:typedef struct node{}NODE; 。在申请变量时就可以这样写:NODE n;其实就相当于 NODE 是node 的别名。区别就在于使用时,是否可以省去struct这个关键字。

  首先:

  在C中定义一个结构体类型时如果要用typedef:   typedef struct Student   {   int no;   char name[12];   }Stu,student;12345   于是在声明变量的时候就可:Stu stu1;或者:student stu2;(Stu 和student 同时为Student的别名)   如果没有typedef即:   struct Student   {   int no;   char name[12];   }Stu;12345   就必须用struct Student stu1;或者struct Stu stu1;来声明   另外这里也可以不写Student(于是也不能struct Student stu1;了)   typedef struct   {   int no;   char name[12];   }Stu;12345   其次:   在c++中如果用typedef的话,又会造成区别:   struct Student   {   int no;   char name[12];   }stu1;//stu1是一个变量12345   typedef struct Student2   {   int no;   char name[12];   }stu2;//stu2是一个结构体类型,即stu2是Student2的别名12345   使用时可以直接访问stu1.no   但是stu2则必须先定义 stu2 s2;   然后 s2.no=10;   用法小结   第一、二个用途   用途一:   定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如:   char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针,   // 和一个字符变量;   以下则可行:   typedef char* PCHAR; // 一般用大写   PCHAR pa, pb; // 可行,同时声明了两个指向字符变量的指针   虽然:   char *pa, *pb;   也可行,但相对来说没有用typedef的形式直观,尤其在需要大量指针的地方,typedef的方式更省事。   用途二:   用在旧的C的代码中(具体多旧没有查),帮助struct。以前的代码中,声明struct新对象时,必须要带上struct,即形式为: struct 结构名 对象名,如:   struct tagPOINT1   {   int x;   int y;   };   struct tagPOINT1 p1;   而在C++中,则可以直接写:结构名 对象名,即:   tagPOINT1 p1;   估计某人觉得经常多写一个struct太麻烦了,于是就发明了:   typedef struct tagPOINT   {   int x;   int y;   }POINT;   POINT p1; // 这样就比原来的方式少写了一个struct,比较省事,尤其在大量使用的时候   或许,在C++中,typedef的这种用途二不是很大,但是理解了它,对掌握以前的旧代码还是有帮助的,毕竟我们在项目中有可能会遇到较早些年代遗留下来的代码。
关注88lifa利发国际娱乐微信
有趣有料的资讯及技术干货
下载发烧友APP
打造属于您的人脉电子圈
关注发烧友课堂
锁定最新课程活动及技术直播
声明:88lifa利发国际娱乐网转载作品均尽可能注明出处,该作品所有人的一切权利均不因本站而转移。
作者如不同意转载,既请通知本站予以删除或改正。转载的作品可能在标题或内容上或许有所改动。
收藏 人收藏
分享:
发表评论
elecfans网友
分享到:

用户评论(0

88lifa利发国际娱乐

百度360搜索搜狗搜索