结构体、位段和联合

>结构体类型创建 

结构体类型的声明

结构是一些值的集合,这些值称为成员变量。结构的每个成员可以使相同或不同类型的变量。

结构的声明:
结构体、位段和联合_第1张图片
tag可以省略,list也可以省略,但是两者只能省略其一,如果没有tag,则list也可作Strut的名称,但建议都保留
需要注意的一点是, 最后的分号不能丢

特殊的声明

在声明结构的时候,可以不完全的声明。
比如:
结构体、位段和联合_第2张图片
结构体、位段和联合_第3张图片
去掉*p则可以编译通过

不同的结构体,哪怕内部元素完全一样也是不同的类型。相同类型的结构体直接才可以相互赋值。
上面两个结构在声明的时候省略掉了结构体标签。

结构成员

结构成员可以是标量、数组、指针,甚至其他结构体也可以

结构体变量的成员是通过点操作符(.)访问的,点操作符接受两个操作数
如:
结构体、位段和联合_第4张图片
struct Stu s; //定义结构体变量

有时候我们得到的不是结构体变量而是指向结构体的指针,那么访问成员方法如下:
结构体、位段和联合_第5张图片

结构体的性质
①所有元素的地址是依次递增的
②首元素地址(元素类型的指针)与结构体地址(结构体指针)是一致的

数组中所有元素的地址是连续的,但是结构体没有这条性质,这是 数组与结构体的区别之一。

结构的自引用

有时候会出现在结构体中包含一个类型为该结构本身的成员的情况,这就叫做结构的自引用。

struct A

你可能感兴趣的:(C语言,结构体,位段,联合)