版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
结构体本章内容第一节结构体类型第二节结构体变量第三节结构体数组第四节结构体指针变量
结构体类型是一种构造数据类型,用于处理类型不同的一组相关数据。结构体类型的定义格式为:struct结构体名{
数据类型1成员名1;
数据类型2成员名2;……
数据类型n成员名n;};第一节结构体类型说明:(5)成员的数据类型可以是另外已定义的结构体类型。(4)结构体类型的定义以大括号后面的分号作为结束。(3)成员的数据类型可以是int、float、char等基本数据类型,也可以是数组、指针。(2)结构体名和成员名的命名规则与变量名相同。(1)结构体类型中包含的数据称为结构体的成员。一、结构体变量的定义定义结构体变量通常有三种方法。第二节结构体变量1、先定义结构体类型,再定义结构体变量
structstudent { intnum; charname[20]; charsex; intage; floatscore; }; studentstu;//也可以写为structstudentstu;定义了结构体类型student,和一个student类型的结构体变量stu。2、定义结构体类型的同时定义结构体变量
structstudent { intnum; charname[20]; charsex; intage; floatscore; }stu1,stu2;定义了结构体类型student和两个student类型的结构体变量stu1和stu2。3、直接定义结构体变量,省略结构体类型名struct { intnum; charname[20]; charsex; intage; floatscore; }stu;定义了一个结构体变量stu。二、结构体变量的初始化结构体变量可以在定义时进行初始化。将结构体变量各成员的初始值按顺序放在一对大括号中,中间用逗号分隔。structstudent { intnum; charname[20]; charsex; intage; floatscore; };studentstu={23010109,"XiaoMing",'M',18,86.5};三、结构体变量的使用使用结构体变量分为使用结构体变量的成员和使用结构体变量整体。1、结构体变量成员的使用结构体变量成员的表示形式为:结构体变量名.成员名其中“.”是成员运算符。程序段11-1intmain(){
structstudent { intnum; charname[20]; charsex; intage; floatscore; };
studentstu; cout<<"输入学号:";cin>>stu.num; cin.get();
cout<<"输入姓名:";cin.get(,20); cout<<"输入性别:";cin>>stu.sex; cout<<"输入年龄:";cin>>stu.age; cout<<"输入成绩:";cin>>stu.score; if(stu.score>=60) cout<<stu.num<<''<<<<"通过考试"<<endl; else cout<<stu.num<<''<<<<"未通过考试"<<endl; return0;}structdate { intyear; intmonth; intday; }; structstudent { intnum; charname[20]; charsex; datebirthday; floatscore; }s; s.birthday.year=2023;对于成员是其他结构体类型的结构体变量,要连续使用成员运算符来对最低级的成员进行操作。2、结构体变量整体的使用相同类型的结构体变量之间可以进行整体赋值。
structstudent { intnum; charname[20]; charsex; intage; floatscore; }; studentstu1={23010109,"XiaoMing",'M',18,86.5},stu2;
stu2=stu1;不同类型的结构体变量间不能进行赋值。一、结构体数组的定义定义结构体数组通常有三种方法。第三节结构体数组1、先定义结构体类型,再定义结构体数组
structstudent { intnum; charname[20]; charsex; intage; floatscore; }; studentstu[5];//也可以写为structstudentstu[5];定义了结构体类型student,和student类型的结构体数组stu,数组有5个元素,每个元素都是student类型的结构体变量。2、定义结构体类型的同时定义结构体数组
structstudent { intnum; charname[20]; charsex; intage; floatscore; }stu[5];定义了结构体类型student与student类型的结构体数组stu。3、直接定义结构体数组,省略结构体类型名
struct { intnum; charname[20]; charsex; intage; floatscore; }stu[5];定义了一个结构体数组stu,结构体类型没有名称。二、结构体数组的初始化结构体数组可以在定义时进行初始化。数组每个元素的初始值都放在一对大括号中,大括号内按成员的顺序排列初始值。structstudent{ intnum; charname[20]; charsex; intage; floatscore; }; studentstu[3]={{23010101,"FanHui",'F',18,74},{23010103,"LiWeiyan",'F',19,95},{23010109,"XiaoMing",'M',18,86.5}};三、结构体数组的使用1、结构体数组元素成员的使用使用结构体数组元素的成员也通过成员运算符“.”。例如stu[0].num表示数组第一个元素stu[0]的成员num。程序段11-2
structstudent { charname[20];intnum; floatscore; }stu[3]; inti,m=0; for(i=0;i<3;i++) { cout<<"输入学生"<<i+1<<"的信息:"<<endl; cout<<"姓名:";cin.get(stu[i].name,20); cout<<"学号:";cin>>stu[i].num; cout<<"成绩:";cin>>stu[i].score; cin.get(); } for(i=0;i<3;i++)//成绩最高的数组元素下标保存在变量m中
{ if(stu[i].score>stu[m].score) m=i; } cout<<"成绩最高的是:"<<endl; cout<<"学号为"<<stu[m].num<<"的"<<stu[m].name<<endl;2、结构体数组元素整体的使用相同类型的结构体数组元素之间可以进行整体赋值。
structstudent { charname[20];intnum; floatscore; }stu1[3]={{"LiHuifen",23010102,82.5},{"XiaoMing",23010103,71},{"ZhangGuo",23010105,90}}; studentstu2[5],stu3; stu3=stu1[0]; stu2[3]=stu1[1];一、结构体指针变量的定义结构体指针变量的定义格式为:结构体类型名*结构体指针变量名;
structstudent { charname[20];intnum; floatscore;};student*p;第四节结构体指针变量结构体指针变量p可以指向student类型的结构体变量。二、指向结构体变量的结构体指针变量structstudent { charname[20]; intnum; floatscore; }stu; student*p; p=&stu; (*p).score=81.5;//为结构体变量stu的成员score赋值将结构体变量所占内存的首地址赋值给结构体指针变量后,指针变量就指向了该结构体变量,然后可以通过指针变量访问结构体变量的成员。例如p->score表示指针变量p所指向的结构体变量的成员score。因此,访问结构体变量的成员时,以下三种形式是等价的:访问结构体变量的成员还可以使用指向运算符“->”,它由“-”和“>”两个符号组成,优先级和成员运算符相同。结构体变量.成员名(*结构体指针变量).成员名结构体指针变量->成员名程序段11-3#include<iostream>#include<string.h>usingnamespacestd;intmain(){
structstudent { charname[20]; intnum; floatscore; }stu;
student*p;
p=&stu; strcpy_s(,"WangYue");//为结构体变量stu的成员赋值
(*p).num=23010111; p->score=81.5; cout<<<<"同学的学号是"<<stu.num<<",成绩是"<<stu.score<<endl; cout<<(*p).name<<"同学的学号是"<<(*p).num<<",成绩是"<<(*p).score<<endl; cout<<p->name<<"同学的学号是"<<p->num<<",成绩是"<<p->score<<endl;return0;}三、指向结构体数组的结构体指针变量structstudent { charname[20]; intnum; floatscore; }stu[3]; student*p; p=stu;将结构体数组的首地址赋给结构体指针变量,使指针变量指向该结构体数组,然后就可以用指针变量访问数组元素。程序段11-4
structstudent { charname[20]; intnum; floatscore; }stu[3];
student*p=stu; floatmax; max=p->score; for(;p<stu+3;p++) { cout<<"输入三个学生的信息:"<<endl; cout<<"姓名:";cin.get(p->name,20); cout<<"学号:";cin>>p->num; cout<<"成绩:";cin>>p->score; cin.get(); } for(p=stu;p<stu+3;p++) { if(p->score>max) max=p->score; } cout<<"--------------------"<<endl; cout<<"最高分是:"<<max<<endl;四、结构体指针变量作为函数参数使用结构体指针变量作为函数参数,函数调用时由实参向形参只传递一个指向结构体变量的指针,可以提高运行效率。程序段11-5structstudent{ charname[20]; intnum; floatscore; chargrade;};voidfunc(student*sp){ student*t; t=sp; for(;s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025福建泉州晋江市智云数字科技有限公司招聘28人笔试历年难易错考点试卷带答案解析
- 2025甘肃国企兰州能源投资集团兰能投能源化工公司招聘34人笔试历年典型考点题库附带答案详解
- 2020幼儿园教师师德总结范文
- 2019年榆树市红星刘家学校七年级数学上册1.1生活中的图形同步试卷
- 2026届青岛市高三历史高考三模卷B1
- 初中英语八年级上册Unit 2 Safety Lesson 2 After the Thunderstorm 教学设计
- 小学语文五年级下册“世界遗产”单元核心知识清单:长城
- 初中七年级历史《明清时期君主专制的强化》单元教学设计
- 初中七年级数学(北师大版)整式的除法知识清单
- 初中英语七年级上册Unit1复习课教案(熊出没主题闯关游戏)
- 2026年重庆市重点学校初一入学语文分班考试试题及答案
- GB/T 47657-2026温室气体产品碳足迹量化方法与要求燃煤发电
- 2025-2030东帝汶海洋渔业资源开发与可持续捕捞管理制度报告
- (2026年)安宁疗护的管理课件
- YYT 0664-2008 医疗器械软件 软件生存周期过程
- DZ∕T 0287-2015 矿山地质环境监测技术规程(正式版)
- 2023年小学信息技术教师选调进城考试试卷
- 精准放射治疗技术及临床应用
- 腰椎退行性病变的诊断和治疗
- 冲压常见缺陷
- YY/T 0741-2018数字化摄影X射线机专用技术条件
评论
0/150
提交评论