第十一章结构体 ■11概述 ■112定义结构体变量的方法 ■113结构体变量的引用 ■114结构体变量的初始化 115结构体数组 ■116指向结构体数据的指针 ■117用指针处理链表
第十一章 结构体 ◼ 11.1 概述 ◼ 11.2 定义结构体变量的方法 ◼ 11.3 结构体变量的引用 ◼ 11.4 结构体变量的初始化 ◼ 11.5 结构体数组 ◼ 11.6 指向结构体数据的指针 ◼ 11.7 用指针处理链表
111概述 在实际问题中我们常需要把不同类型的几个数据组合起来构成 个整体。如一个公司职员的个人信息,或学校中教师和学生的信息。 以学生信息为例,它可能包括学生的学号、班级、姓名、性别、年龄、 成绩等。这时原有的那些数据类型就显的有点无能为力了,所以引入 种新的数据类型结构体。 结构体是由一些逻辑相关,但数据类型不同的分量组成的一组数据。 结构体类型定义形式 struct结构体类型名用户定义 数据类型成员名1;的标识符 关键字]数据类型成员名2称成员表列 注意:用户需要先定义 结构体类型,之后才能数据类型成员名m 定义结构体变量}注意不要忘了分号
11.1 概述 在实际问题中我们常需要把不同类型的几个数据组合起来, 构成 一个整体。如一个公司职员的个人信息, 或学校中教师和学生的信息。 以学生信息为例, 它可能包括学生的学号、班级、姓名、性别、年龄、 成绩等。这时原有的那些数据类型就显的有点无能为力了,所以引入 一种新的数据类型----结构体。 结构体是由一些逻辑相关, 但数据类型不同的分量组成的一组数据。 注意: 用户需要先定义 结构体类型, 之后才能 定义结构体变量 注意不要忘了分号 称成员表列 结构体类型定义形式: struct 结构体类型名 { 数据类型 成员名1; 数据类型 成员名2; : : 数据类型 成员名n; } ; 关键字 用户定义 的标识符
112定义结构体变量的方法 、定义结构体变量 name 1.先定义结构体类型, age 再定义变量 struct student i char name 10; int age name float sI, S2 age st2 struct student stI, st2 结构体变量st1和st2各自都 需要20个字节的存储空间
11.2 定义结构体变量的方法 一、 定义结构体变量 1. 先定义结构体类型 , 再定义变量 struct student { char name[10] ; int age ; float s1 , s2 ; } ; struct student st1 , st2 ; st1 st2 name age s1 s2 name age s1 结构体变量st1 和st2各自都 s2 需要20个字节的存储空间
2.定义结构体类型同时定义变量3.直接定义结构体变量 struct student struct i char name[10li i char name[10; int age, int age; float sI, S2 3 stI, st2 i float sl, S2; 3 stI, st2 4.说明: (1)结构体变量具有结构体类型的一切特征 在内存中结构体变量占有一片连续的存储单元 存储单元的字节数可用 sizeof运算符算出 printf( %odin", sizeof(struct student)) printf(%od\n", sizeof(stD));
2. 定义结构体类型同时定义变量 struct student { char name[10] ; int age ; float s1 , s2 ; } st1 , st2 ; 3. 直接定义结构体变量 struct { char name[10] ; int age ; float s1 , s2 ; } st1 , st2 ; 4. 说明: (1) 结构体变量具有结构体类型的一切特征 在内存中结构体变量占有一片连续的存储单元 存储单元的字节数可用sizeof 运算符算出 printf(“%d\n” , sizeof(struct student) ) ; printf(“%d\n” , sizeof(st1) ) ;
(2)结构体类型可以嵌套定义 例: struct date 或: struct stud i int year; i char name 10 int month struct date int day i int year i int month struct stud i char name 10; int day i struct date birthday 3 birthday i float sI, S2 float sI. s2
(2) 结构体类型可以嵌套定义 例: struct date { int year ; int month ; int day ; } ; struct stud { char name[10] ; struct date birthday ; float s1 , s2 ; } ; 或 : struct stud { char name[10] ; struct date { int year ; int month ; int day ; } birthday ; float s1 , s2 ; } ;