一、定义结构体变量的方法
结构体格式
struct tag { //tag是结构名,编译器不会为其分配内存空间
member-list
member-list
member-list ...
} variable-list 变量名列表;//variable是结构变量
1.先声明结构体类型再定义变量名:
struct student{
成员列表
};
struct student stu1,stu2;
2.在声明类型的同时定义变量
3.直接定义结构体类型变量
struct {
成员列表
}变量名列表;
结构体嵌套:结构体中包括结构体
二、重点:结构体变量的引用
1.不能将结构体变量作为一个整体进行输入和输出;结构体变量名.成员名 stu1.num 表示stu变量中的num成员,stu1.num=100;其中.是成员运算符。
可以将stu2=stu1;
2.若成员本身是又属于一个结构体类型,则需要若干个成员运算符,一级级找到最低级的成员。只能对最低级成员进行赋值或存取及运算。
stu1.birthday,month
3.对结构体变量可以进行加减乘除运算
4.可以引用结构体变量成员的地址,也可以引用结构体变量的地址。
结构体变量的地址和结构体第一个成员变量的地址是相同的。结构体变量的地址主要用作函数参数,传递结构体变量的地址。
三、结构体变量初始化
结构体数组:每个数组的元素都是一个结构体
重点:指向结构体类型数据的指针
一个结构体变量的指针就是该结构体变量所占据的内存段的起始地址。
可用一个指针变量,用来指向一个结构体变量,此时该指针变量的值是结构体变量的起始地址。
结构体指针一般形式:struc 结构体名 *结构指针变量名
sturct stu * pstu;
结构名和结构变量是两个不同的概念,结构名只能表示一个结构形式,编译系统并不对它分配内存空间。
只有该变量被说明为这种类型的结构时,才对该变量分配空间。
四、访问的形式:(* 结构指针变量).成员名
或:结构指针变量->成员名
eg.(*pstu).name or pstu -> name
五、结构指针作函数参数
将一个结构体变量的值传递给另一个函数
(1)用结构体变量的成员作参数
(2)用结构体变量作实参
(3)用指向结构体变量(或数组)的指针作实参,将结构体变量(或数组)的地址传给形参