1 / 66
文档名称:

第9章 结构体、共用体和枚举.ppt

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

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

分享

预览

第9章 结构体、共用体和枚举.ppt

上传人:rjmy2261 2013/1/2 文件大小:0 KB

下载得到文件列表

第9章 结构体、共用体和枚举.ppt

文档介绍

文档介绍:第9章结构体、共用体与枚举
了解结构体、共用体和枚举类型的特点
熟练掌握结构体类型、变量、数组、指针变量的定义、初始化和成员的引用方法
掌握共用体和枚举类型、变量的定义和引用
掌握用户自定义类型的定义和使用
结构体
【问题】如何表示下面的数据?
可以定义以下变量来分别表示上面的数据:
char name[10];int age;char sex[3];char xh[11];
char nation[20];char address[20];char mobile[20];
由于必须类型相同才能构造成数组,显然以前学习的数据类型都不能很好地解决问题
结构体类型的定义
结构体类型的定义形式为:
struct 类型名
{ 成员说明表列};
例如:
struct student /* 结构体类型名*/
{ char name[10]; /*结构体成员,以下都是*/
int age;
char sex[3];
char xh[11];
char nation[20];
char address[20];
char tel[20];
};
结构体类型的定义
struct是结构体关键字,结构体类型定义中的每个成员项都有确定的类型和名称,称为结构体类型的“域”,每个域的定义后面要有“;”号。
结构体类型由用户定义,所以结构体类型不是固定结构的类型,用户可以定义不同结构的结构体类型,也可以定义相同结构的结构体类型,系统均认为是不同的结构体类型,例如下面是两个不同的结构体类型,虽然aa和bb的结构是一样的:
struct aa{int a;int b;char c;}
struct bb{int a;int b;char c;}
结构体变量的定义和初始化
定义结构体变量的方法可以如下:
用已定义的结构体类型名定义变量。例如:
struct student wang,zhang;
在定义结构体类型的同时定义结构体变量。例如:
struct student /* 结构体类型名*/
{
char name[10]; /*结构体成员,以下都是*/
int age;
char sex[3];
char xh[11];
char nation[20];
char address[20];
char tel[20];
}wang,zhang;
结构体变量的定义和初始化
不定义结构体类型名,直接定义结构体变量。例如:
struct
{ char name[10];
int age;
char sex[3];
char xh[11];
char nation[20];
char address[20];
char tel[20];
}wang,zhang;
结构体类型的长度
结构体类型的长度可以用sizeof运算符计算出来,形式为:
sizeof(结构体类型名)
或者
sizeof(变量名)
如sizeof(struct student) 或sizeof(wang),在TC和VC下,结果分别是:86和88。
(*)结构体长度和字节对齐问题
对齐内存空间都是按照字节(byte)来划分的,虽然理论上对任何类型的变量的访问可以从任何地址开始,但实际情况并非如此,而是需要按照一定的规则在空间上排列,这就是对齐。对齐的规则与编译器和操作系统有关,没有统一的规则。例如,在VC下:
struct student
{
char c;
int a;
};
其实际存储如右图:
结构体类型的嵌套
struct date
{ int year;
int month;
int day;
};
struct student
{
char name[10];
int age;
char sex[3];
char xh[11];
struct date birthday;
char nation[20];
char address[20];
char tel[20];
}wang,zhang;
struct student
{
char name[10];
int age;
char sex[2];
char xh[11];
struct
{
int year;
int month;
int day;
}birthday;
char nation[20];
char address[20];
char tel[20];
}wang,zhang;