目录
1、什么是结构体?
2、结构体成分
3、结构体变量的定义与初始化
3.1、结构体变量的三种定义方式
3.2、结构体变量的初始化
4、结构体成员的访问(两种方式)
4.1、直接访问
4.2、间接访问
5、结构的特殊声明
5.1、不完全声明(匿名)
正文
1、什么是结构体?
先引入我们所熟悉的类型:char、short、int、long等等,这些是C语言提供的内置类型,但我们用单一的内置类型无法描述复杂的对象。
如,描述一个学生,需要描述其名字、年龄、性别、学号等;此时用单一类型是不够的。
为了解决这个问题,C语言增加了结构体这种自定义的数据类型,让程序员可以创造出合适的类型。
定义:
结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量,如:标量、数组、指针、或其他结构体。
结构体是用来描述一个复杂对象的,可包含多个属性。
2、结构体成分
请看一下代码:
struct student
{
char name[20];//姓名
int age;//年龄
char sex[5];//性别
char id[20];//学号
};
一个结构体中包含:结构体关键字、名字、成员、分号
3、 结构体变量的定义与初始化
3.1、结构体变量的三种定义方式
3.2、结构体变量的初始化
- 按照结构体成员的顺序初始化
顾名思义,顺序初始化是按照结构体成员的顺序进行的初始化。
- 乱序初始化
不按照结构体成员的顺序进行初始化,此时需要点明初始化的成员,如下:
.age 代表将年龄初始化为19
.sex 代表将性别初始化为男
……
4、结构体成员的访问(两种方式)
结构成员访问操作符:. ->
4.1、直接访问
通过点操作符(.)进行访问
使用方式:结构体变量.成员名
s5.name :找到结构体变量s5中的成员name
s5.age :找到结构体变量s5中的成员age
……
4.2、间接访问
通过箭头操作符(->)进行访问
使用方式:结构体指针->成员名
定义一个指向结构体的指针,p指向结构体变量s5
p->name : 相当于 (*p).name
p->age : 相当于 (*p).age
5、结构的特殊声明
5.1、不完全声明(匿名)
匿名的结构体类型,如果没有对结构体类型重命名的话,基本上只能使用一次。