最近复习数据结构的时候,总是分不清struct、typedef struct和他们后面跟的tag名称的位置和含义,今天就来翻书记录下具体结构体的定义和typedef的使用。
一、结构体定义
1.C语言中结构体定义:C允许用户建立由不同类型的数据组成的组合型的数据结构。
struct 结构体名 {成员表列}; 只是建立了一个结构体类型,相当于模型而没有定义变量,其中并无具体数据。因此,需要定义结构体类型变量。
2.定义结构体类型变量的方法:
A.先声明结构体类型,再定义该类型的变量
struct 结构体名 {成员表列};
struct 结构体名 结构体变量名1,结构体变量名2;
B.在声明类型的同时定义变量
struct 结构体名 {成员表列}结构体变量名;
C.不指定类型名而直接定义结构体类型变量
struct {成员表列}结构体变量名;
3.定义结构体数组并初始化
struct 结构体名 {成员表列}数组名[数组长度]={"aas","sad","dsf"};
二typedef关键字使用方法
1.typedef可用来指定新的类型名来代替已有的类型名。
2.使用情况:
A.简单地用一个新的类型名代替原有的类型名
typedef float Real; //指定Real为类型名,作用于float相同
B.命名一个简单的类型名代替复杂的类型表示方法,如命名一个类型名代替结构体类型
typedef struct{成员表列}结构体变量名; //声明一个新类型名结构体变量名,代替以上结构体,可用它去定义变量
三、最后,看下区别:
1.typedef struct 结构体变量名{成员表列}结构体变量名;
2.struct 结构体变量名{成员表列}结构体变量名;
3.typedef struct {成员表列}a1,a2,a3;相当于typedef a1 a2;typedef a1 a3;
1和2的区别在于申请变量时,1需要写 struct node n;而2则需要直接写node n;
3则表示结构体变量名都是结构体类型,声明变量时用任何一个都可以。
以上,就是对struct和typedef的定义区分。