使用 C 语言复习数据结构的时候,最常用到的 C 语言中的两个对于初学者容易弄不明白的概念一个是指针 Pointer,另一个就是结构体 Struct了,这里专门整理并系统复习了 C 语言中结构体相关概念与使用
定义结构
C 中一个结构体定义如下
1 | struct tag { member-list } variable-list ; |
其中struct
为结构体关键字,tag
为结构体的标志,member-list
为结构体所有成员声明,variable-list
为结构体声明变量,在声明成员变量时只能声明变量类型与变量名称,不能初始化值
定义举例
这里具几例结构体定义的方法
前无标志,后有声明
1 | struct{ |
这个结构体拥有三个成员,但是没有指明其标签,声明了结构体变量为 s1,这样可以直接使用s1
来访问这个结构体,但是后面无法在声明新的结构体变量
前有标志,后无声明
1 | struct SIMPLE{ |
这个结构体同样拥有三个成员,虽然在定义结构时没有顺便声明变量,但是后面可以使用struct [tag]
来声明变量,这里使用struct SIMPLE t1, t2[20], *t3
声明了三个变量,分别为单个结构体,结构体数组,和指向单个结构体的指针
使用 typedef 定义
1 | typedef struct Simple{ |
使用typedef
声明结构体后,后面的Simple2
就不再像前面的是声明一个此结构体变量了,而是可以直接通过Simple2 [name]
来在后面声明新的此结构体变量。这里Simple2
相当于struct Simple
更多 typedef 定义
1 | typedef struct Student{ |
这里在使用typedef
声明一个Student
结构体后,还使用stu
, *pstu
, stus[10]
以让我们在后面方便的使用stu
, pstu
, stus
分别声明一个结构体变量,结构体指针,结构体数组
结构体的访问
对于结构体变量类型的不同,有两种对结构体成员的访问方式,直接访问和间接访问,直接访问作用于普通变量,间接访问作用于结构体指针变量
1 | struct SIMPLE{ |