结构体
- 建立一个结构模板
- 声明合适该结构的变量
- 访问结构变量的各个部分
建立结构声明
结构声明(structure declaration):描述模板
结构模板:标记是book
struct book {
char title[MAXSIZE];
char author[MAXSIZE];
float value;
};
定义结构变量
把library声明成一个book类型的变量
struct book library;
简化
struct book {
char title[MAXSIZE];
char author[AXAUTL];
float value;
}library;
访问结构成员
结构成员符( . )
取地址: &library.float
结构初始化
指定初始化器(designated initializer):
-
使用点运算符和成员名标定特定的元素。
-
可以按照任意顺序使用指定初始化器。
-
在指定初始化器后面的普通初始化器, 为指定成员后面的成员提供初始值。
-
花括号中的初始化列表进行初始化,各初始化项用逗号隔开。
structu book surprise = { .value = 10.99};
指向结构的指针
- 结构不能作为参数传递给函数,可以传递结构指针
- 用于表示数据的结构中包含指向其他结构的指针。
指向guy结构类型的指针
struct guy * him;
指向fellow结构体
him = &fellow;
声明和初始化结构指针
声明指针,和声明其他指针一样。
struct guy * him;
关键字struct,结构标记guy,这个声明未创建一个新的结构,him现可以指向任意现有的guy类型的结构。结构名不是结构的地址,记得加上取地址符:&
him = &barney
用指针访问成员
若
him == &fellow
//使用结构名访问:fellow.income
1.使用->运算符
him->income
him==&fellow<-->*him==fellow
声明结构数组
数组名:library
该数组中的每一个元素都是struct book类型的结构变量。
struct book library[MAXSIZE];
library是一个结构数组,意味着fellow[0]是一个结构。