- 1、本文档共31页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第七章 结构与联合;结构;结构的定义;例:
struct Person{
char name[10];
bool sex;
int age;
float pay;
};
定义了一个结构类型,类型名称为Person,结构类型中有四个不同数据类型的成员(注意:定义的不是变量,是一种类型)
然后可用结构类型名作类型修饰符来定义结构类型的变量
Person x,y; //定义了两个Person结构类型的变量。;结构变量的定义——可采用三种格式;例:
struct Arith{
char op;
int a,b;
}; //定义结构类型
Arith x,y; //定义两个Arith结构类型的变量x,y
Arith z1={‘+’,10,xx},z2={‘*’,60},z3=z1; //定义变量z1,z2并初始化
;二、定义结构类型的同时定义变量
格式:
struct 结构类型名{
成员定义1;
成员定义2;
……
成员定义n;
}变量名〖=初始化数据或同类型变量名〗,…;;例:
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,并初始化。;结构类型的声明;例:
struct BB; //BB类型的不完整定义,即类型声明
struct AA{
char a;
BB *b; //定义BB结构类型的指针
};
struct BB{ //给出BB的完整定义
int b;
AA a; //使用已定义的AA结构类型
};;结构大小的计算;例:
struct BB{
int a;
int b;
}; //成员a,b是整型,因此结构类型BB占8字节
struct CC{
char *data;
BB s;
CC *link;
}; //成员data占4字节,s是BB结构类型,占8字节,link是指向自身结构类型的指针,占4字节,因此结构类型CC占16字节;结构成员的访问操作;结构成员的访问操作;结构变量的赋值;结构数组保??和处理数据;输入函数定义 (输入记录并保存在结构数组中,预处理略)
Person a[10]; //定义全局结构数组a,存放人员记录
void input(int n){
cout“从键盘上输入具有Person结构的”n“个记 录”endl;
int i,k;
Person x; //定义局部结构变量x,用于输入的变量
for(i=0;in;i++){
cinx.name; //输入一个人的姓名(字符串)
cink; //输入一个人的性别(1表示男,0表示女)
x.isMale=(k!=0); //赋值时0转换成false,1转换成true
cinx.agex.pay; //输入年龄和工资
a[i]=x; //将结构变量x赋给a[i],结构赋值
}
};输出函数定义
void input(int n){
cout“从键盘上输入具有Person结构的”n“个记 录”endl;
for(int i=0;in;i++){
couta[i].name‘’; //显示姓名
cout(a[i].isMale? “男”: “女”)‘’; //显示性别
couta[i].age‘’a[i].payendl; //显示年龄和工资
}
};主函数
void main( ){
int n;
cout“请输入一个正整数(1=n=10):”
cinn;
input(n);
output(n);
}
};例7.2:从一个保存人员记录的结构数组中查找工资(pay域)
文档评论(0)