版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
组合的力量—结构体和共用体C语言程序设计第九章本章目录01.认识结构体02.结构体变量的初始化与引用03.共用体及共用体的使用04.趣味实例9.1
认识结构体定义复杂的自定义数据类型结构体类型的定义一般形式struct 结构体类型名称{
数据类型
成员名1;数据类型
成员名2;…数据类型
成员名n;};说明“struct”是定义结构体类型的关键字,其后是所定义的结构体类型名称,在结构体类型名称下的花括号中,定义了结构体类型的成员项,每个成员由“数据类型”和“成员名”共同组成。示例structStudent{intnum;charname[10];charsex;intage;charaddress[30];};结构体类型的定义1)结构体类型定义以关键字struct开头,其后为结构体类型的名称,该名称的命名规则与变量的命名规则相同。2)定义好一个结构体类型后,并不意味着立即分配一块内存单元来存放各个数据成员,它只是向编译器声明,该结构体类型由哪些数据类型的成员构成,各占多少个字节,按什么格式存储,并把它们当作一个整体来处理。3)结构体类型定义末尾括号后的分号不可缺少。小贴士结构体变量的定义先定义结构体类型,再定义结构体变量structStudent{intnum;
charname[10];
charsex;
intage;
charaddress[30];};structStudentboy1,boy2;在定义结构体类型的同时定义结构体变量structStudent{intnum;
charname[10];
charsex;
intage;
charaddress[30];}boy1,boy2;直接定义结构体变量struct{intnum;
charname[10];
charsex;
intage;
charaddress[30];}boy1,boy2;实例体验:structdate{intmonth;intday;intyear;};struct{intnum;charname[20];charsex;structdatebirthday;floatscore;}stu1,stu2;例9-1
结构体类型的定义及变量声明。9.2结构体变量的初始化与引用操作结构体中的数据结构体变量的初始化定义结构体类型和变量的同时,对结构体变量初始化在声明结构体变量的同时,可以直接指定每个成员的初始值。按成员定义顺序赋值。未初始化的成员会被自动赋默认值(如0)。示例:structStudent{charname[50];intage;floatscore;}stu1={"JohnDoe",20,85.5};先声明结构体类型,之后定义结构体变量并对其初始化示例:structStudent{charname[50];
intage;
floatscore;};structStudentstu1={"JohnDoe",20,85.5};结构体变量的引用书写格式例如:#include<stdio.h>
structStudent
{charname[50];
intage;
floatscore;
};
structStudentstudent1={"Alice",20,90.5};
main()
{printf("Name:%s\n",);//访问结构体成员
printf("Age:%d\n",student1.age);
printf("Score:%.2f\n",student1.score);}结构体变量名.成员名实例体验:structdate{intmm,dd,yy;};main(){structdated1,d2;d1.mm=9;d1.dd=1;d1.yy=2004;d2=d1;printf("%d-%d-%d\n",d2.mm,d2.dd,d2.yy);}例9-2定义两个同属于类型structdate的变量d1和d2,先对变量d1赋值,再将d1赋给变量d2。实例体验:#include<stdio.h>structstu{charname[30];floatscore[3];}stu1;main(){printf("请输入学生姓名及三门课的成绩:\n");scanf("%s%f%f%f",,&stu1.score[0],&stu1.score[1],&stu1.score[2]);printf("学生:%s的三门课成绩分别为:",);printf("%.2f,%.2f,%.2f\n",stu1.score[0],stu1.score[1],stu1.score[2]);}例9-3输入学生成绩,并显示。9.3共用体及共用体的使用理解数据的共享存储共用体的概念共用体的概念为了节约内存或便于对数据进行处理,C语言允许不同类型的数据共享一段存储单元,这种共享存储单元的特殊数据类型被称为共用体类型,也可称之为联合类型。核心特性与机制互斥存储:同一时刻只能存储一个成员的值。
赋值覆盖:对某一成员赋值会覆盖其他成员,使其无效。
节省内存:复用同一块内存空间,高效利用资源。典型与结构体的区别结构体:各成员拥有独立空间,总大小是成员之和,成员“共存”。
共用体:所有成员共享同一块内存,大小等于最大成员,成员“互斥”。共用体类型的定义和变量定义共用体类型的定义共用体变量的定义书写格式:union共用体名{
数据类型
成员名1;
数据类型
成员名2;…
数据类型
成员名n;};1.先定义共用体类型,再定义共用体变量uniondata{intm;
floatx;
charc;};uniondataa,b;2.定义共用体类型的同时定义共用体变量uniondata{intm;
floatx;
charc;}a,b;3.
直接定义共用体变量union{intm;floatx;charc;}a,b;共用体内存分配共用体内存分配遵循以下原则:1)共用体的内存必须大于或等于其成员变量中最大数据类型(包括基本数据类型和数组)
的大小。2)共用体的内存必须是最宽基本数据类型的整数倍,如果不是,则填充字节。①
成员变量都是基本数据类型的共用体。共用体大小由最大数据类型决定。②
成员变量包含数组类型的共用体。共用体大小由最大成员变量决定。共用体变量的初始化与引用初始化书写格式:
union共用体类型名
共用体变量=(其中一个成员的类型值);完成了共用体变量的初始化后,即可引用共用体中的成员,共用体变量的引用方式与结构体类似。引用格式书写格式:共用体变量名.成员名初始化原则共用体在定义时只能初始化第一个成员,其他成员无法直接初始化。例9-4共用体的定义与引用。#include<stdio.h>#include<string.h>unionTest{inta;doublepi;charstr[20];};main(){unionTesttest;strcpy(test.str,"helloworld");printf("a=%d\n",test.a);printf("pi=%f\n",test.pi);printf("str=%s\n",test.str);}9.4趣味实例—师生信息统计表综合运用结构体知识趣味实例实训目的1.熟练掌握结构体的定义及引用方法,灵活运用其编程。2.理解
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年霞浦县带编教师招聘考试备考题库及答案解析
- 2026年绥中县带编教师招聘笔试备考试题及答案解析
- 2026年肇源县带编教师招聘考试模拟试题及答案解析
- 2026年肇州县带编教师招聘考试备考试题及答案解析
- 2026年吉木乃县带编教师招聘考试备考题库及答案解析
- 2026年皋兰县带编教师招聘笔试模拟试题及答案解析
- 2026年贞丰县带编教师招聘考试参考题库及答案解析
- 2026年长宁县带编教师招聘考试模拟试题及答案解析
- 嘉兴供销冷链发展有限公司2026年度招聘5人笔试备考试题及答案详解
- 2026年罗田县带编教师招聘笔试备考试题及答案解析
- 急性呼吸道梗阻的急救护理-2
- 贵州省2024年高三年级4月适应性考试化学试题附参考答案(解析)
- DL∕T 2024-2019 大型调相机型式试验导则
- DL∕T 683-2010 电力金具产品型号命名方法
- 《色彩与医疗》课件
- 洗护发技术(美发与形象设计专业高职)全套教学课件
- 医院感染监测标准2023
- 华晨宝马汽车有限公司新建10米法电磁兼容实验室项目环境影响报告
- 可填充颜色的地图(世界、中国、各省份)
- 标量波理论与科学革命
- 专利应用情况说明
评论
0/150
提交评论