- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第七章结构与联合
结构
n 结构是一种用户自定义类型,它由多个 相同数据类型或不同数据类型的成员组 成
n 用户自定义类型中定义的每个变量称为 数据成员,每个函数称为函数成员或成 员函数
结构的定义
n 结构定义的格式:
struct 结构类型名{
成员定义1;
成员定义2;
……
成员定义n;
};
说明 1、结构类型的定义以保留字struct开始
2、结构类型名即定义的结构类型名称
3、左右花括号之间的部分称为结构体
4、结构类型中定义的成员可以是除本身结构类型 以外的任何已有类型,也可以是任何已有类型(包括 本身类型)的指针类型
n 例:
struct Person{
char name[10];
bool sex;
int age;
float pay;
};
定义了一个结构类型,类型名称为Person,结 构类型中有四个不同数据类型的成员(注意: 定义的不是变量,是一种类型)
然后可用结构类型名作类型修饰符来定义结构 类型的变量
Person x,y; //定义了两个Person结构类型 的变量。
结构变量的定义
——可采用三种格式
一、用结构类型名定义变量:
格式: 〖 struct 〗结构类型名变量名〖={初 始化数据}或同类型变量名〗, …
n 结构类型名相当于类型修饰符
n 初始化数据是由每一个成员值构成的初始化数 据,也可以是同类型的变量名。
例:
struct Arith{
char op;
int a,b;
}; //定义结构类型
Arith x,y; //定义两个Arith结构类型的变量x,y
Arith z1={‘+’,10,xx},z2={‘*’,60},z3=z1; //定义变 量z1,z2并初始化
例:
struct AAA{
char s[20];
int top;
}a1={“Microsoft”,0},a2=a1,a3,*ap;
//以上语句在定义AAA结构类型的同时定义了三个变量 a1,a2,a3及一个指针变量ap,且a1被初始化。
三、定义无名结构类型的同时定义变量 格式:
struct {
成员定义1;
成员定义2;
……
成员定义n;
}变量名〖 =初始化数据或同类型变量名〗 ,…;
这种格式没有类型名,因此必须在定义结构类型时定 义变量
struct BBB{
char name[10];
struct {
int yy,mm,dd;
}birth;
}bx={“xxk”,{55,3,27}}; //结构类型BBB有两个成员, 一个字符型数组成员name和一个无名结构类型成员 birth (无名结构类型定义时定义了成员),定义BBB 结构类型的同时定义了该类型的变量bx,并初始化。
结构类型的声明
n 结构类型的声明即不完整定义
n 不完整定义是指只给出定义的类型保留字( 即struct)和类型标识符(即结构类型名) 而不给出结构体就结束定义
n 不完整定义只能作为指针类型使用并且必须 在稍后给出它的完整定义
n 例:
struct BB; //BB类型的不完整定义,即类型声明 struct AA{
char a;
BB *b; //定义BB结构类型的指针
};
struct BB{ //给出BB的完整定义
int b;
AA a; //使用已定义的AA结构类型 };
结构大小的计算
n 结构大小计算方法:
n 所有成员占用空间大小的总和
n 例:
struct AA{
int *a;
}; //一个成员是整型指针,指针类型占用空间是4
字节,因此结构类型AA占4字节。
结构成员的访问操作
n 直接成员运算符(又称点运算符) 直接成员运算符: .
使用方法:结构变量.成员名
例:结构变量x中有成员a,b,c,则访问成员a的
方法: x.a
若x的成员b中又有成员变量t,则访问成员
变量t的方法: x.b.t
vec[5].name表示结构数组vec中第5号元素
的成员变量name
结构成员的访问操作
n 间接成员运算符()
使用格式:结构指针变量指针所指向 的结构类型数据的一个成员名
例:指针p指向某结构数据,则p a是p
指针所指向的结构数据的成员变量a,也
可以等价地表示为(*p).a
n 直接成员运算符与间接成员运算符的优 先级很高(仅次于括号)
结构数组保存和处理数据
已知人员记录的结构如下:
struct Person{ //结构类型名为Person
char name[10]; //姓名
bool isMale; //性别
int age; //年龄
float pay; //工资
};
设计一程序,输入若干人员记录并保存 在一个结构数组中。
输入函数定义 (输入记录并保存在结构数组中
文档评论(0)