第九章 结构体与共同体.ppt_第1页
第九章 结构体与共同体.ppt_第2页
第九章 结构体与共同体.ppt_第3页
第九章 结构体与共同体.ppt_第4页
第九章 结构体与共同体.ppt_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

1、第九章结构与社区,本章的要点:1 .掌握结构和关节型数据的定义方法和引用方法;2.了解枚举类型数据的定义和引用方法。9.1概述,有时,有必要将不同类型的数据组合成一个有机的整体以供参考。这些数据是相互关联的。例如,一个学生的相关信息:结构数据结构可以用来描述上述信息。例如:struct student int numchar name20迷人的性爱;国际年龄;char addr30;定义结构类型的一般形式是:结构结构名称成员表列;应该描述每个成员的类型;成员名称命名规则与变量名相同。是一个类型,而不是变量名。9.2定义结构类型变量的方法,方法1:首先定义结构类型,然后定义变量名称结构学生整数;

2、char name20迷人的性爱;国际年龄;char addr30;结构学生1,学生2;将studet1和sudent2定义为结构学生类型变量。如果不指定结构名称,就不能只将一个变量指定为“结构类型”。有时,您可以使用符号常量来表示结构类型,例如:#定义学生结构学生int numchar name20迷人的性爱;国际年龄;char addr30;这样,学生可以直接用来定义变量,如:STUDENT student1,student2此时,没有必要编写关键字struct。方法2:在定义类型时定义变量,例如:构造学生整数;char name20迷人的性爱;国际年龄;char addr30studen

3、t1,student2一般形式是:结构名成员表列变量名表列;方法3:直接定义结构类型变量。一般形式是结构成员表列变量名表列;此时,结构名称不会出现。一些解释如下:1 .类型和变量是不同的概念,所以不要混淆它们;2.结构中的成员可以独立使用,它们的使用和状态等同于普通变量;3.成员也可以是结构变量;例如:结构日期为月;国际日;国际年;结构,学生整数;char name20国际年龄;结构日期生日;student1,student2成员名称可以与程序中的变量名相同,它们不代表同一个对象。9.3结构类型变量的引用,规则:1。结构变量不能作为一个整体分配和输出;只有每个成员可以单独输出(引用形式是:结构

4、变量名。成员名称)。printf( . ),student 1);printf(“% d”,student 1 . num);输出10010,错误!正确!2.如果成员本身属于结构类型,则只能分配、访问和操作最低级别的成员。例如:学生1。生日。年份(续),(续),3。您可以像普通变量一样对成员变量执行各种操作,例如:总和年龄=学生1。年龄学生2。年龄;4.您可以引用成员的地址或结构变量的地址,如scanf (%d ,错误!输入student1.num的值,输出student1的第一个地址,9.4初始化结构变量,(1)初始化外部存储类型的结构变量:struct student long int n

5、umchar name20迷人的性爱;char addr20a=9801,“王鸿”,西,“宫铃路2号”;main()printf( no .% ldn name :% sn sex :% cn address :% sn ,a.num,,a.sex,a . addr);运行结果为:编号:9801名称:王红性别: W地址:2宫铃路,(2)初始化静态存储类型的结构变量,如:主()静态结构学生长整型数;char name20迷人的性爱;char addr20a=9801,“王鸿”,西,“宫铃路2号”;printf( no .% ldn name :% sn sex :% cn addre

6、ss :% sn ,a.num,,a.sex,a . addr);9.5结构数组(每个数组元素是一个结构类型数据),(1)结构数组的定义,如struct student int numchar name20迷人的性爱;国际年龄;char addr30;struct studnt stu3,也可以直接定义,如struct student int numstu3或结构整数;stu3(2)结构数组的初始化(只能初始化全局或静态存储类别的数组),结构学生整数;char name20迷人的性爱;国际年龄;char addr30stu3=111,“李”,M,18,“大连”,您也可以使用:str

7、uct student int num;学生stu=,结构数组初始化的一般形式是:定义数组后增加:=初始值表列;例子:有三个候选人。输入一次赢得投票的候选人姓名。要求最后输出每个候选人的投票结果。结构人员字符名称20;int计数;排行榜3=“李”,0,“张”,0,“刘”,0;main() int i,j;char leader _ name20对于(I=1;i=10I)scanf(“% s”,leader _ name);对于(j=0;J3;j ) if(strcmp(leader_name,leader j . name)=0)leader j . count);对于(I=0;i3;i )

8、printf(%5s:%dn ,lead I . name,lead I . count);9.6指向结构类型数据的指针,指向结构变量的指针:它是由结构变量占用的内存段的起始地址。示例:main()结构学生长整型数;char name20迷人的性爱;结构学生stu _ 1;结构学生* p;p=strcpy(stu_1.name,“李玟”);学生_1 .性别=女;printf(“编号:%ldnname%sn sex:%cn”,stu_1.num,stu_1.name,stu _ 1 . sex);printf(“Nno .% ldn name % sn x :% cn”),(*p)。数字(* .

9、 p)。名称(* . p)。性);它指三种形式的结构成员:结构变量名、成员名(*p)、成员名p-成员名,指向运算符。它的优先级高于自增自减算子。尝试分析以下操作:p-n获取由p-n指向的结构变量中成员n的值,使用后加1;P-n获取由p指向的结构变量中成员n的值,并添加1,9.8公共体和11.8.1公共体的概念:几个不同的变量占据同一段内存的结构称为“公共体”类型结构。“公共体”类型变量的定义形式是:联合公共体名称成员表列变量表列;示例:联合数据int I;char ch浮动f。a、b、c;或联合数据int I;char ch浮动f。联合数据a、b、c;或union int I;char ch浮

10、动f。a、b、c;直接定义,首先定义类型,注意普通体类型变量和结构类型变量的区别,而结构类型变量占用的内存长度是每个成员占用的内存长度的总和。公共体类型变量占用的内存长度等于最长成员的长度。9.8.2公共体变量的引用方法,注意:只能引用公共体变量中的成员,不能引用公共体变量本身。例如,您可以引用a .i(在公共体变量中引用整数变量I)A . CH(在公共体变量中引用字符变量CH)A . F(在公共体变量中引用实变量F),但不能只引用公共体变量,如printf (%d ,A);不对!9.8.3常见体型数据的特征,1。每个瞬间只有一个成员在发挥作用;2.公共主体变量中的活动成员是存储的最后一个成员

11、;3.公共体变量的地址和其成员的地址是相同的地址;4.您不能给公共变量名赋值,也不能试图引用变量名来获取成员的值,并且在定义公共变量时也不能初始化它。5.您不能将公共主体变量作为函数参数,也不能将函数带回公共主体变量,但是您可以使用指向公共主体变量的指针;6.公共体类型可以出现在结构类型定义中,也可以定义公共体数组。该结构也可以出现在公共体类型定义中,并且该数组也可以用作公共体的成员。9.9枚举类型,如果一个变量只有几个可能的值,它可以被定义为枚举类型。枚举是指逐个枚举变量的值,变量的值仅限于枚举值的范围。定义方法:首先定义枚举类型enumweekday sun,mon,tue,wed,thu,fri,sat然后使用此类型定义变量,如enumweekday,week _ end或者直接定义枚举变量。例如:枚举工作日太阳,星期一,星期二,星期三,星期四,星期五,星期六工作日,周末;描述:枚举元素是常量,不是变量,因此不能赋值。如上所述,sun、mon和tue sat的值依次为0、1和27,这也可以改变枚举元素的值。定义中指出:enum

温馨提示

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

评论

0/150

提交评论