版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第九章结构体学习目标理解结构体的概念掌握结构体类型和结构体变量的差别掌握引用结构体成员运算符“.”和“->”掌握结构体数组、结构体指针23
处理一个学生的信息,包括:
学号、姓名、性别、年龄、成绩、地址 按照以往定义变量的方式,我们可以这样定义: intnum; charname[20]; charsex; intage; floatscore; charaddr[50];这些变量相互独立,很难反映出它们的内在联系struct
student{
};结构体(构造类型)问题提出9.1结构体结构体是一种构造数据类型用途:把不同类型的数据组合成一个整体——
自定义数据类型结构体类型定义struct[结构体名]{
类型标识符成员名;类型标识符成员名;
……};成员类型可以是基本型或构造型struct是关键字,不能省略合法标识符可省:无名结构体学生信息学号:intnum;姓名:charname[20];性别:charsex;年龄:intage;成绩:floatscore;地址:charaddr[30];例structstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];};结构体类型定义描述结构的组织形式,不分配内存结构体变量的定义先定义结构体类型,再定义结构体变量一般形式:struct
结构体名{
类型标识符成员名;类型标识符成员名;
……};struct结构体名变量名表列;structstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];};structstudentstu1,stu2;namenumsexagescoreaddr4字节4字节20字节1字节4字节30字节………
一般形式:struct
结构体名{
类型标识符成员名;类型标识符成员名;
……}变量名表列;例
structstudent{intnum;charname[20];charsex;int
age;floatscore;char
addr[30];}stu1,stu2;定义结构体类型的同时定义结构体变量struct{
类型标识符成员名;类型标识符成员名;
…………….}变量名表列;例
struct{intnum;charname[20];charsex;intage;floatscore;charaddr[30];}stu1,stu2;用无名结构体直接定义变量只能一次一般形式:直接定义结构体变量
说明结构体类型与结构体变量概念不同类型:不分配内存;变量:分配内存类型:不能赋值、存取、运算;变量:可以结构体可嵌套结构体变量的初始化形式一:struct
结构体名{
类型标识符成员名;类型标识符成员名;
…………….};struct结构体名结构体变量={初始数据};
structstudent
{
int
num;
charname[20];
char
sex;
int
age;
char
addr[30];
};
structstudentstu1={112,“WangLin”,‘M’,19,“20BeijingRoad”};例struct
结构体名{
类型标识符成员名;类型标识符成员名;
…………….}结构体变量={初始数据};structstudent{intnum;charname[20];charsex;intage;charaddr[30];}stu1={112,“WangLin”,‘M’,19,“200BeijingRoad”};例形式二:struct{
类型标识符成员名;类型标识符成员名;
…………….}结构体变量={初始数据};例struct{intnum;charname[20];charsex;intage;charaddr[30];}stu1={112,“WangLin”,‘M’,19,“200BeijingRoad”};形式三:结构体可嵌套例
structdate{intmonth;intday;intyear;};structstudent{intnum;charname[20];
structdatebirthday;}stu;numnamebirthdaymonthdayyear结构体成员名与程序中变量名可相同,不会混淆例
structstudent{intnum;charname[20];
structdate{intmonth;intday;intyear;}birthday;}stu;numnamebirthdaymonthdayyear例main()
{structstudent{intnum;charname[20];}stu;
intnum;num=0;
stu.num=1;……}结构体变量的引用引用规则结构体变量不能整体引用,只能引用变量成员引用方式:结构体变量名.成员名可以将一个结构体变量赋值给另一个结构体变量结构体嵌套时逐级引用例
structstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];}stu1,stu2;stu1={101,“WanLin”,‘M’,19,87.5,“DaLian”};printf(“%d,%s,%c,%d,%f,%s\n”,stu1);错
例
structstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];}stu1,stu2;stu1.num=10;stu1.score=85.5;stu1.score+=stu2.score;stu1.age++;例
structstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];}
stu1,
stu2;stu2=stu1;例
structstudent{intnum;charname[20];structdate{intmonth;intday;intyear;}birthday;}stu1,stu2;stu1.birthday.month=12;结构体数组结构体数组的定义三种形式:形式一:
structstudent{intnum;charname[20];charsex;intage;};structstudentstu[2];形式二:structstudent{intnum;charname[20];charsex;intage;}stu[2];形式三:struct{intnum;charname[20];charsex;intage;}stu[2];numnamesexagenumnamesexagestu[0]stu[1]25B结构体数组初始化
顺序初始化分行初始化
结构体数组引用引用方式:结构体数组名[下标].成员名顺序初始化:structstudent{intnum;charname[20];charsex;intage;};structstudentstu[3]={100,“WangLin”,‘M’,20,101,“LiGang”,‘M’,19,110,“LiuYan”,‘F’,19};分行初始化:structstudent{intnum;charname[20];charsex;intage;};structstudentstu[]={{100,“WangLin”,‘M’,20},{101,“LiGang”,‘M’,19},{110,“LiuYan”,‘F’,19}};全部初始化时维数可省structstudent{intnum;charname[20];charsex;intage;}stu[3];stu[1].age++;strcpy(stu[0].name,”ZhaoDa”);重要!structperson{charname[20];intcount;}leader[3]={“Li”,0,“Zhang”,0,”Wang“,0};main(){inti,j;charleader_name[20];
for(i=0;i<10;i++){scanf("%s",leader_name);
for(j=0;j<3;j++)if(strcmp(leader_name,leader[j].name)==0) leader[j].count++;}for(i=0;i<3;i++)printf("%s:%d\n",leader[i].name,leader[i].count);}namecountLiZhangWang000例:统计候选人的选票Li
Zhang
Wang
Li
Wang
Li
Li
Zhang
Li
Wang
Li:5Zhang:2Wang:3结构体和指针指向结构体变量的指针定义形式:struct结构体名*结构体指针名;使用结构体指针变量引用成员形式存放结构体变量在内存的起始地址(*结构体指针名).成员名
结构体指针名->成员名
结构体变量名.成员名指向运算符优先级:1结合方向:从左向右structstudentstu1;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年医疗废物分类目录试题及答案
- 物业管理法规宣传手册内容
- 快递消防责任制度
- 成品仓责任制度
- 房管局安全生产责任制度
- 执法对象安全责任制度
- 扶贫攻坚责任制度
- 技术部责任制度
- 护师岗位责任制度
- 招商部岗位责任制度
- 中国城市建设史(全套课件)
- 软装窗帘布艺成品工艺生产验收质检标准
- 呼吸慢病管理及策略
- 客运企业安全管理
- 地质灾害危险性评估工作方案
- 交通基础设施智能建造技术探索与发展交流
- 计算机网络实验指导(郑宏等编著 华为)课件PPT(计算机网络实验指导)
- 重庆大学附属三峡医院TOMO建设项目环评报告
- 贵州大学实验报告书格式
- 公路路基路面现场测试随机选点方法(JTG3450-2019)
- DB11T 2096-2023城市轨道交通工程盾构法施工技术规程
评论
0/150
提交评论