Typedef struct 与struct

前言

      在学习《数据结构导论》的过程中,发现了一个很神奇的东西,当时不理解是怎么回事,感觉看不懂,大家应该知道,这本书在考试的时候,对代码是有考察的,并且是面向C语言的,所以我就进行了一番研究,下面和大家分享一下!PS:是在C语言环境下!!!

分享

  • Typedef:
    • 这个东西表示的是:为复杂声明定义简单的别名,说白了,就是定义一个结构类型要用他
    • 书上的一个例子:
typedef struct node
{
DataType date;//数据域
struct node*next;//指针域
}
Node,*LinkList;

         于是在声明变量的时候就可以:Nod nod1;(如果没有typedef就必须用struct Node nod1;来声明)
         这里的Nod实际上就是struct Node的别名。Nod==struct Node
         这里也可以不写Node(于是也不能struct Node nod1;了,必须是Nod nod1;)

typedef struct 
{
DataType date;//数据域
struct node*next;//指针域
}
Node,*LinkList;
  • 两者的区别:
typedef struct tagMyStruct
{
int LNum;
long ILength;
}
My Struct;

         上面的tagMyStruct是标识符,MyStruct是变量类型(相当于int,char等)
         这个语句完成的是两个操作:
         ①定义一个新的结构类型:

typedef struct tagMyStruct
{
int LNum;
long ILength;
};

         tagMyStruct叫做“tag”,就是“标签”的意思,只是一个临时名字,不管有没有typedefstruct关键字和tagMyStruct一起,构成了这个结构类型,这个结构都存在。
         ②typedef为这个新的结构起了一个名字叫做MyStruct,所以MyStruct实际上相当于struct tagMyStruct。

typedef struct tagMyStruct
{
int LNum;
long ILength;
}
My Struct;

         声明后申请结构变量的方法有两种:

  • struct tagMyStruct变量名
  • MyStruct变量名

小结

      以上是我对这一部分的内容的理解,希望可以帮助到大家,同时如果大家有更好的理解的话,欢迎在评论处留言,大家相互交流一下!!!

猜你喜欢

转载自blog.csdn.net/tigaobansongjiahuan8/article/details/81297146