第7讲结构体与共用体PPT课件_第1页
第7讲结构体与共用体PPT课件_第2页
第7讲结构体与共用体PPT课件_第3页
第7讲结构体与共用体PPT课件_第4页
第7讲结构体与共用体PPT课件_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第7讲讲 结构体与共用体结构体与共用体17.1 结构体7.2 共用体学习目标学习目标l理解结构体的概念。l掌握结构体、共用体类型的定义。l掌握结构体变量 、结构体数组和结构体指针的使用。l理解共用体变量、共用体指针的使用。l理解链表的创建和输出。2第第7讲讲 结构体与共用体结构体与共用体37.1.1 结构体的定义和初始化7.1.2 结构体的使用7.1.3 结构体数组7.1.4 结构体与指针数字字符+数字字符串多种不同类型数据的混合结构结构体数据结构体数据4乘客信息系统,混合结构大数据管理结构体的概念结构体的概念l结构体结构体将不同类型的数据有序组合在一起是用户的自定义数据类型需要先定义再使用

2、5结构体的定义结构体的定义自定义的结自定义的结构体类型名构体类型名结构体类型中结构体类型中成员的名字成员的名字struct是结构是结构体类型的标识体类型的标识分号不能缺!分号不能缺! struct 结构体名 类型标识符1 成员名1; 类型标识符n 成员名n; ;结构体的定义格式:结构体的定义格式:6登机乘客信息管理登机乘客信息管理NoNameAgeSexWeightLuggageMeal1David21M89.9495.2A2Kate14F54.2376.3B3John70M74.2469.6B4Mary46F62.7412.7A编号姓名年龄性别体重行李重量所选套餐登机乘客信息7例例1:1:定

3、义结构体定义结构体struct passenger int no; char name20; int age; char sex; float weight; float luggage; char meal;编号姓名年龄性别体重行李重量所选套餐8结构体变量结构体变量l结构体变量结构体变量为自定义结构体数据类型的变量定义结构体类型变量时开辟内存空间在内存所占的存储空间等于各成员存储空间的总和结构体变量定义方式1.先定义结构体类型再定义变量名2.在定义结构体类型的同时定义变量名3.不定义结构体类型名,只定义结构体变量名1. 先定义结构体类型再定义变量名结构体变量的定义结构体变量的定义struct

4、 student student1, student2;结构体类型名结构体类型名变量变量1 1变量变量2 2struct student int num; char name20; char sex; int age; float score; char addr30;先定义结构先定义结构体类型体类型例例1struct 结构体名结构体名 成员列表成员列表; 结构体名结构体名 变量名列表变量名列表struct date int day; int month; int year; ; struct student char name20; struct date birthday; struct

5、student stu;结构体变量的定义方法结构体变量的定义方法一个结构体中一个结构体中可包含其他结可包含其他结构体的变量!构体的变量!1. 先定义结构体类型再定义变量名例例2 # define STUDENT struct student STUDENT int num; char name20; char sex; char addr30; ; STUDENT student1, student2;结构体变量的定义方法结构体变量的定义方法1. 先定义结构体类型再定义变量名例例3利用宏简化程序!利用宏简化程序!凡是凡是STUDENT的地方都用的地方都用struct student机械替换机械

6、替换 struct student int num; char name20; char sex; int age; float score; char addr30; student1, student2;结构体变量的定义方法结构体变量的定义方法2.在定义结构体类型的同时定义变量名例例1 struct 结构体名结构体名 成员列表成员列表 变量名列表变量名列表; 在定义结构体类型在定义结构体类型的同时定义变量的同时定义变量struct int num; char name20; char sex; int age; float score; char addr30; student1, stu

7、dent2;结构体变量的定义方法结构体变量的定义方法3.不定义结构体类型名,只定义结构体变量名例例1 struct 成员列表成员列表 变量名列表;变量名列表; 不出现结构体名不出现结构体名结构体变量定义结构体变量定义l结构体变量变量的定义例15void main(void) struct date int year, month, day; today; coutsizeof(struct date)endl; 12定义结构体类型变量时开辟内存空间结构体变量的初始化结构体变量的初始化l直接在结构体变量之后通过赋值语句完成初始化void main(void) struct student lon

8、g int num; char name20; char sex; char addr30; student1=901031, “Li Lin”, M, “123 Beijing Road”;student1;cinstudent1.num; student1.num=100;错误错误必须用成员名引用必须用成员名引用结构体变量的使用结构体变量的使用l使用结构体变量成员格式嵌套的结构体变量必须逐层引用。18student1.student1.birthday.birthday.dayday=25;=25;如果结构体变量的成员本身又是一个结构体如果结构体变量的成员

9、本身又是一个结构体类型,则要用若干个成员运算符,由外向内类型,则要用若干个成员运算符,由外向内逐层找到最内层的一级成员,而且只能对最逐层找到最内层的一级成员,而且只能对最内层的成员进行访问。内层的成员进行访问。结构体变量的使用结构体变量的使用l使用结构体变量成员格式结构体变量中的成员可以同一般变量一样进行运算。19结构体变量的成员同普通变量一样,都可以结构体变量的成员同普通变量一样,都可以进行同类型普通变量所允许的各种运算。进行同类型普通变量所允许的各种运算。student1.birthday.day+; student1.score+=60;例:例:#include stdafx.h#inc

10、lude using namespace std;struct date int day; int month; int year;struct student int num; char name20; char sex; int age; struct date birthday;20int main(int argc, char* argv) struct student stu; coutstu.num; ; coutstu.sex; coutstu.birthday.year; coutstu.birthday.month; coutstu.birthday.

11、day; coutNo.: stu.numendl; coutName:endl; coutSex:stu.sexendl; return 0;结构体数组结构体数组l结构体数组定义结构体数组结构体数组:结构体数组中的每个元素都是一个结构体类型的变量,其中包括该类型的各个成员。数组各元素在内存中连续存放。struct student 成员列表; ; student std5;21结构体数组结构体数组22struct student int num; char name20; char sex; int age; float score; char addr30; ;struct

12、student stu30;struct student int num; char name20; char sex; int age; float score; char addr30; stu30;直接定义直接定义结构体数组结构体数组l结构体数组初始化与数值型数组的初始化方式类似,只需将数组的各个元素用花括号分隔开。23struct student int num; char name20; char sex; stu3= 1011, Li Lin,M, 1012,Wang Lan,F, 1013,Liu Fang,F;结构体数组结构体数组l结构体数组的使用 结构体数组的引用与普通数组类

13、似,同样通过下标来访问。数组元素是结构体类型,所以只能对成员进行访问。24结构体数组名下标.成员名例:结构体变量的定义例:结构体变量的定义struct passenger person1, person2, person3, person4;struct passenger person4;变量名变量类型用数组替代具体变量用数组替代具体变量25例例3 3:结构体变量的初始化:结构体变量的初始化struct passenger person4= 1, “David”, 21, M, 89.9, 495.2, A, 2, “Kate”, 14, F, 54.2, 376.3, B, 3, “Joh

14、n”, 70, M, 74.2, 469.6, B, 4, “Mary”, 46, F, 62.7, 412.7, A; ;26例:例:27struct person char name9; int age; ;struct person bme10= “Jone”,17, “Paul”,19, “Mary”,18, “Adam”,16 ;A) endl;B) 1endl;C) 1endl;D) 0endl;输出:输出:Adam输出:输出:d输出:输出:a输出:输出:M结构体变量的使用结构体

15、变量的使用for(i=0, select_B=0; i4; i+) if(personi.meal=B) select_B+; endl;cout“The total is”select_B结构体成员名 (*结构体指针变量名).结构体成员名例如:student stu; student *p=&stu; cout num (*p).num;31必须加圆括号,因为必须加圆括号,因为“.”运算符优先级更高运算符优先级更高。例:例: #include using namespace std; struct student long num; char name

16、20; int age; ; /定义结构体定义结构体32void main() student a=20418132,ZhaoGang,23; student *p; /定义结构体指针变量定义结构体指针变量 p=&a; /给结构体指针变量赋值给结构体指针变量赋值 couta.num ; couta.ageendl; cout(*p).num (*p).name ; cout(*p).ageendl; coutnum name ; coutage endl;第第7讲讲 结构体与共用体结构体与共用体337.1 结构体7.2 共用体7.2 共用体共用体6.2.1 结构体与共用体

17、变量的定义6.2.2 共用体变量的使用6.2.3 共用体与指针347.2.1 共用体与共用体变量定义共用体与共用体变量定义l共用体类型定义格式union 共用体类型名共用体类型名 类型标识符类型标识符1 成员名成员名1; 类型标识符类型标识符n 成员名成员名n;35共用体类型定义的标识符共用体类型定义的标识符7.2.1 共用体与共用体变量定义共用体与共用体变量定义l共用体类型定义格式union data char a; int b; float c; ;367.2.1 共用体与共用体变量定义共用体与共用体变量定义l所谓“共用”是指多种不同数据类型的变量从同一地址开始存放,共同占用同一段内存单元

18、。l但是在某一时刻有且仅有一个变量占用这一段内存单元。l这种由不同类型的数据共用同一段内存单元的用户自定义类型成为共用体。377.2.1 共用体与共用体变量定义共用体与共用体变量定义l可以把一个char型变量a,一个short型变量b和一个long型变量c存放在起始地址为2000的同一段内存单元中。382000abc7.2 共用体共用体7.2.1 结构体与共用体变量的定义7.2.2 共用体变量的使用7.2.3 共用体与指针39共用体变量的使用共用体变量的使用l共用体变量的使用不能对共用体变量初始化和赋值 40union data char a; int b; float c; u1=A, 25

19、, 3.5; /错误的! u1.a /只能直接使用变量中的成员 u1.b u1.c共用体变量的使用共用体变量的使用l共用体变量的使用不能对共用体变量初始化和赋值 41 共用体变量虽然可以存放几种不同类型的成员,但在同一时刻只能有一个成员起作用,其它成员不起作用。 共用体变量中起作用的成员是最后一次存放的成员。共用体变量的使用共用体变量的使用42union un int i; double y;struct st char a10; union un b;coutsizeof(struct st)endl;1843void main(void) union EXAMPLE struct int x, int y; in; int a,b; e; e.a=1; e.b=2; e.in.x=e.a*e.a; e.in.y=e.b+e.b; coute.in.xte.in.yendl;inxyabb1 2 48输出:输出:4 8共用体共用体7.2.1 结构体与共用体变量的定义7.2.2 共用体变量的使用7.2.3 共用体与指针447.2 共用体共用体l共用体与指针共用体指针变量的定义与对共用体的引用形式与结构体类似。45#include using namespace

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论