【笔记】【C语言】第九章 用户自己建立数据类型
9.1 定义和使用结构体变量
9.2 使用结构体数组
9.3 结构体指针
9.4 用指针处理链表
9.5 共用体类型
9.6 使用枚举类型
9.7 用typedef声明新类型名
9.1 定义和使用结构体变量
(1)
结构体:用户自己建立的,由不同类型数据组成的组合型的,数据结构。
结构体是派生的数据类型,使用其他类型的对象来构造结构体。
(2)声明:
建立结构体类型,其中并无具体数据,系统也不对他分配存储空间。
strcut 结构体名
{
成员列表
};
示例:
strcut Student { int num; char name[20]; char sex; int age; float score; char address[30]; };
(3)定义:
先声明结构体类型,再定义该类型变量。
struct node a,b;
(4)初始化:
①给全员赋初值:
struct node { int num; char name[20]; struct date { int year,month,day; }birthday; float score; }student = { 101, "WH" ,1982,5,21,80 };
②部分成员赋初值
}student = { 101, "WH" };
(5)引用:
结构体成员运算符:.
结构体指针运算符:->
student.name student -> name //等价于 (*student).name
(6)注意事项:
- 一个结构体的成员,可以属于另一个结构体类型。
- 也可以不指定结构体名,而直接定义结构体类型变量。
- 一般形式为: struct {成员列表} 变量名列表;
- 结构体类型 ≠ 结构体变量
- 只能对变量赋值、存取和运算,不能对类型。
- 类型不分配空间,只对变量分配空间。
- 结构体类型中的成员名,可以与程序中的变量名相同,但二者代表的对象不同。
- 域:结构体变量中的成员。
9.2 使用结构体数组
(1)一般形式:
struct 结构体名 { 成员列表 } 数组名[数组长度]; 结构体类型 数组名[数组长度];
9.3 结构体指针
(1)为了方便和直观,C中允许将(*p).num 用 p->num来替代
struct node { int num; }; struct node student; struct node *p; //以下三个表达式相同 student.num (*p).num p -> num
(2)用 结构体变量 和 结构体变量的指针 作函数参数
作用:将一个结构体变量的值 传递给 另一个函数。
方法:
- 用 结构体变量 的成员 作参数。
- 用 结构体变量 作实参。 //比较占空间
- 用 指向结构体变量的指针 作实参。
(3)例如:
#includestruct node { int num; char name[20]; float score[3]; float ave; }; int main { void input( struct node stu[] ); struct node max( struct node stu[] ); void print( struct node stu[] ); struct node stu[3]; struct node *p = stu; input(p); print(max(p)); return 0; }
9.4 用指针处理链表
9.5 共用体类型
9.6 使用枚举类型
9.7 用typedef声明新类型名