1 / 21
文档名称:

第11章 结构与共用体.ppt

格式:ppt   页数:21
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

第11章 结构与共用体.ppt

上传人:中国课件站 2011/10/11 文件大小:0 KB

下载得到文件列表

第11章 结构与共用体.ppt

文档介绍

文档介绍:第11章结构体与共用体
为将不同数据类型、但相互关联的一组数据,组合成一个有机整体使用,C语言提供一种称为“结构体”的数据结构体。
结构体类型与定义结构体变量的方法 结构体变量的初始化与引用 结构体数组
指向结构体类型数据的指针
共用体型和枚举型
定义已有类型的别名
结构体类型与结构体变量的定义
C语言中的结构体类型,相当于其它高级语言中的“记录”类型。
结构体类型定义
struct 结构体类型名 {
数据类型数据项1; 数据类型数据项2; ………… 数据类型数据项n; };
注:本书将1个数据项称为结构体类型的1个成员(或分量)。
[] 定义一个反映学生基本情况的结构体类型,用以存储学生的相关信息。
struct student //学生信息结构体类型
{
char no[7]; //学号
char name[9]; //姓名
char sex[3]; //性别
int age; //年龄
};
(1)“结构体类型名”和“数据项”的命名规则,与变量名相同。
(2)数据类型相同的数据项,既可逐个、逐行分别定义,也可合并成一行定义。例如,本案例代码中的日期结构体类型,也可改为如下形式:
struct student //学生信息结构体类型
{
char no[7], name[9], char sex[3];
int age;
};
(3)结构体类型中的数据项,既可以是基本数据类型,也允许是另一个已经定义的结构体类型。
[] 人的信息结构体。
struct date
{
int year; //年
int month; //月
int day; //日
};
struct person //人信息结构体类型
{
char name[9],
char sex[3];
struct date birthday; //出生日期
};
结构体变量定义
用户自己定义的结构体类型,与系统定义的标准类型(int、char等)一样,可用来定义结构体变量的类型。
,可概括为两种:
(1)间接定义法──先定义结构体类型、再定义结构体变量
例如,利用[]中定义的学生信息结构体类型student,定义了一个相应的结构体变量student1:
struct student student1;
结构体变量student1:拥有结构体类型的全部成员。
注意:
(a)使用间接定义法定义结构体变量时,必须同时指定结构体类型名。
(b)结构体变量所占内存的大小等于结构体中各数据项所占内存之和。
(2)直接定义法──在定义结构体类型的同时,定义结构体变量
例如,结构体变量student1的定义可以改为如下形式:
struct student
{
char no[7]; //学号
char name[9]; //姓名
char sex[3]; //性别
int age; //年龄
} student1;

(1)结构体类型与结构体变量是两个不同的概念,其区别如同int类型与int型变量的区别一样。
(2)结构体类型中的成员名,可以与程序中的变量同名,它们代表不同的对象,互不干扰。
结构体变量的初始化与成员的引用

结构体变量初始化的格式,与一维数组相似:
结构体变量={初值表}
例如,[]中的结构体变量student1的初始化如下:
student1={“000102”, “张三”, “男”,20}。
不同的是:如果某成员本身又是结构体类型,则该成员的初值为一个初值表。
例如,[]中的结构体变量person1的初始化又如何:
person1={"张三", "男", {1980,9,20}}
注意:初值的数据类型,应与结构体变量中相应成员所要求的一致,否则会出错。

对于结构体变量,要通过成员运算符“.”,逐个访问其成员,且访问的格式为:
/*其中的“.”是成员运算符*/
例如:

如果某成员本身又是一个结构体类型,则只能通过多级的分量运算,对最低一级的成员进行引用。
此时的引用格式扩展为:
.….最低1级子成员
例如,引用结构体变量student1中的birthday成员的格式分别为:



(1)对最低一级成员,可像