结构体与共用体_第1页
结构体与共用体_第2页
结构体与共用体_第3页
结构体与共用体_第4页
结构体与共用体_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

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

文档简介

1、结构体与共用体第1页,共68页,2022年,5月20日,18点55分,星期二 教学要求: 1. 掌握结构体类型和结构体变量的定义方法。 2. 掌握结构体变量的使用,掌握结构体数组的应用。 3. 初步掌握单链表的基本操作。 4.掌握共用体变量的定义方法及其引用。 第12章 结构体与共用体第2页,共68页,2022年,5月20日,18点55分,星期二 一辆银灰色的车牌号为湘A00001的雪弗兰轿车以80km/h的速度行驶。 在这里由车牌、车名、型号、车速共同构成了对一辆轿车的描述,在数据处理中,这四个属性应该当作一个整体来处理。但它们不属于同一类型,无法用数组来容纳,而用单个变量来分别代表各个属性

2、,又难以反映出它们的内在联系。 C语言提供结构体(structure)数据结构,将不同数据类型、但相互关联的一组数据,组合成一个有机整体使用。 12.1 概 述第3页,共68页,2022年,5月20日,18点55分,星期二 1. 结构类型定义 定义形式:strcut 结构类型名 数据类型成员;数据类型成员;数据类型成员n; ; /*些行的分号不能少*/也可以表述成如下形式: struct 结构体名 分量表 ; 12.2 结构类型与结构变量的定义(1) struct是结构类型关键字(2)“结构体名”和“数据项名”的命名规则,与变量名相同。(3) 个数据项称为结构类型的个成员(或分量)。第4页,共

3、68页,2022年,5月20日,18点55分,星期二 2. 结构体类型特点 ()定义一个结构体类型,系统不会为其分配内存单元。定义一个类型只是表示这个类型的结构,即告诉系统它由哪些类型的成员构成,各占多少个字节,各按什么形式存储,并把它们当作一个整体来处理。 ()结构体类型由多个成员组成,成员的数据类型可以是整型、实型、字符型、数组 ,也允许是另一个已经定义的结构体类型。 ()结构体类型是根据设计者的需要来组合的。 ()结构体类型系统没有预先定义,凡需要使用结构体类型数据的,都必须在程序中自己定义。 第5页,共68页,2022年,5月20日,18点55分,星期二struct student i

4、nt num; char name20; char sex; int age; float score; char addr30; ;例如:定义学生档案信息结构类型:成员表列 struct是类型关键字后分号不能少,表明语句结束。结构体名第6页,共68页,2022年,5月20日,18点55分,星期二 又例如,定义一个日期结构类型: struct date int year; int month; int day; ; 数据类型相同的数据项,既可逐个、逐行分别定义,也可合并成一行定义。写为如下形式: struct date int year, month, day; ; 3. 结构体成员的类型可以

5、是结构体类型 在定义一个结构体类型时,可以利用已定义的另一个结构体类型来定义其成员的类型。第7页,共68页,2022年,5月20日,18点55分,星期二 例12.1 嵌套结构体类型定义的例子。 struct date struct student int month; int num ; int day; char name20 int year; char sex , ; int age ; struct date birthday; char addr30; ;numnamesexage birthdaymonthdayyearaddr 结构类型student的 “birthday”数据项

6、可以是一个已经定义的结构类型date第8页,共68页,2022年,5月20日,18点55分,星期二 4. 声明结构体类型变量 (1)先定义结构体类型再定义变量名。 定义了结构体类型 struct student 后, struct student char no7; char name9; char sex3; struct date birthday; ; 可以用它定义变量。如: struct student st1, st2; 不能写成 struct st1, st2; 第9页,共68页,2022年,5月20日,18点55分,星期二 为了方便起见,可以在程序开头定义符号常量进行简化。如:

7、#define STUDENT struct student 则在程序中可以直接写成:STUDENT char no7; char name9; char sex3; struct date birthday;STUDENT st1, st2;第10页,共68页,2022年,5月20日,18点55分,星期二 (2) 在定义类型的同时定义变量。 则一般定义形式为:struct 结构体名 分量表; 变量表; 如:struct student char no7; char name9; char sex3; struct date birthday; st1,st2;第11页,共68页,2022年,

8、5月20日,18点55分,星期二 (3)直接定义结构类型变量定义形式为: struct 分量表; 变量表; 在 struct 后不出现结构体名,因此也不能再以此定义相同的结构体变量。 如: struct char no7; char name9; char sex3; struct date birthday; st1,st2;第12页,共68页,2022年,5月20日,18点55分,星期二1. 结构变量的引用 对于结构变量,要通过成员运算符“.”,逐个访问其成员,访问的格式为: 结构变量名 . 成员 例如,struct student st1,st2;st1.no, 引用结构变量st1中的n

9、o成员; 引用结构变量st1中的name成员, 引用结构变量st2中的name成员,也可以引用结构体变量以及变量成员的地址例如, &st1 &st1.no其中的“.”是成员运算符 12.3 结构体变量的初始化和引用第13页,共68页,2022年,5月20日,18点55分,星期二如果某成员本身又是一个结构类型,则只能通过多级的分量运算,对最低一级的成员进行引用。此时的引用格式扩展为: 结构变量名. 成员 . 子成员.最低1级子成员例如,引用结构变量st1中的birthday成员的格式分别为:st1. birthday.yearst1. birthday.monthst1. birthday.da

10、y(1)对最低一级成员,可像同类型的普通变量一样,进行相应的各种运算。第14页,共68页,2022年,5月20日,18点55分,星期二 (2) 只能对结构体变量的各分量进行输入输出,不能将一个结构体变量直接进行输入输出。 scanf(“%s,%s,%s,%d,%d,%d”,&st1);错误 printf(“%s,%s,%s,%d,%d,%d”,st1); 错误 scanf(“%s”,); 正确 scanf(“%d”,&st1.birthday.day); 正确 printf(“%s,%d”,st1.birthday.day); 正确 (3) 分量和结构体变量的地址均可以被引用。如: scanf

11、(“%s”,st1. name); (输入st1. name的值) printf(“%x”,&st1); (以十六进制输出st1的首地址)第15页,共68页,2022年,5月20日,18点55分,星期二2. 结构变量的初始化结构变量初始化的格式,与一维数组相似: 结构变量= 初值表 不同的是:如果某成员本身又是结构类型,则该成员的初值为一个初值表。例如:st1= “000102”, “张三”, “男”, 1980,9,20 注意:初值的数据类型,应与结构变量中相应成员所要求的一致,否则会出错。第16页,共68页,2022年,5月20日,18点55分,星期二 例12.2 外部存储类的结构体变量初

12、始化struct student1 long int num; char name20; char sex; char addr30; a=89031,“Li Lin”,M,“123 Beijing Road”;main( ) printf(“%ld,%s,%c,%sn”,a.num,a.sex,a.addr); 输出结果:89031,Li Lin,M,123 Beijing Road第17页,共68页,2022年,5月20日,18点55分,星期二 3. 关于结构体类型的几点说明 (1)类型与变量是两个不同的概念。 先定义结构体类型,再定义该类型变量。在编译时,对变量分配空间,对类型来说不存在

13、分配空间。 变量可以赋值、存取或运算,而类型没有这些操作。 (2) 结构体中的分量名可以与程序中的其它变量同名,它们代表不同的对象,互不干扰。 对结构体中的分量可以单独使用。第18页,共68页,2022年,5月20日,18点55分,星期二(3)不可以将两个结构变量进行关系比较非法语句struct temp int a; char ch; x1, x2; main( ) x1.a=10; x2.ch=a; if( x1= =x2 ) 第19页,共68页,2022年,5月20日,18点55分,星期二 (4)可以把一个结构体变量赋给另一个同类型的结构体变量。struct temp int a; ch

14、ar ch; x1, x2; main( ) x1.a=10; x1.ch=a; x2=x1 printf(%d, %c, x2. a, x2.ch); 把结构变量x1的值 赋给结构变量x2.第20页,共68页,2022年,5月20日,18点55分,星期二 (5) 结构体类型的变量在内存中占有一段连续的存储单元。占有连续存储单元的大小取决于成员的数据类型.如: struct exp int a; float b; char ch8; ; struct exp x=1234,56.7, text结构体类型变量x在内存共占用14个字节的连续单元第21页,共68页,2022年,5月20日,18点55

15、分,星期二(6) 可通过sizeof ( )运算符获得结构体变量占用的内存大小。 struct exp int a; float b; char ch8; x; main( ) int size; size=sizeof(x); printf(size=%dn, size); 第22页,共68页,2022年,5月20日,18点55分,星期二例12.3 结构体成员的使用 #include #include struct score int math; int eng; int comp;struct stu char name12; char sex; long StuClass; struct

16、 score sub;第23页,共68页,2022年,5月20日,18点55分,星期二main() struct stu s1=LiMing,M,990324,88,80,90; struct stu s2; clrscr(); s2=s1; 0=H; 1=u; s2.StuClass=990325; s2.sub.math=83; printf(Record1%s,%c,%ld,%d,%d,%dn“, ,s1.sex,s1.StuClass, s1.sub.math,s1.sub.eng,p); printf(Record2%s,%c,%ld,%d,%d,%dn, , s2.sex,s2.S

17、tuClass, s2.sub.math,s2.sub.eng,p);相同结构类型变量可直接赋值第24页,共68页,2022年,5月20日,18点55分,星期二12.4 结 构 体 数 组结构体数组每个数组元素都是一个结构体类型的数据,且这些数据又分别包括各个分量。结构体数组的定义、初始化等操作和内存中的存放方式与普通数组相类似。 1.结构体数组的定义与结构变量的定义相似,结构数组的定义也分直接定义和间接定义两种方法,只需说明为数组即可。 结构体类型名 数组名n例如: struct student stu 3 struct BookLib Book4;第25页,共68页,2022年,5月20日

18、,18点55分,星期二 2.结构数组初始化 与普通数组一样结构数组也可在定义时进行初始化。 初始化的格式为: 结构数组n 初值表1,初值表2,.,初值表n 例12.4 用结构类型 struct student 定义一个结构体数组stu3,用于存储和显示三个学生的基本情况。 # include struct.h struct student stu 3= “000102”,“张三”,“男”,1980,9,20 , “000105”,“李四”,“男”,1980,8,15 , “000112”,“王五”,“女”,1980,3,10 ;第26页,共68页,2022年,5月20日,18点55分,星期二

19、main() int i; /* 表示1个空格字符*/ printf(No.NameSexBirthdayn); for(i=0; i成员运算符左侧的运算对象,只能是指向结构变量(或结构数组)的指针变量 。“-”称为指向运算符。 (3)(*p).成员 (*p)表示p指向的结构体变量,不得省去括号。这样就有:st1 .num 等价于 (*p).num 等价于 p -num, 第30页,共68页,2022年,5月20日,18点55分,星期二 请注意: pn 得到p指向的结构体变量中的分量n的值。 pn+ 等价于(pn)+得到p指向的结构体变量中的分量n的值,用完该值后加1。 +pn 等价于 +(p

20、 n) 得到p指向的结构体变量中的分量n的值,并在用该值前,先加1。第31页,共68页,2022年,5月20日,18点55分,星期二例12.5指向结构体变量的指针变量应用。include “stdio.h”struct student char number9; char name8; char department20; ;main()struct student student1,*p; printf(“n学号:”); gets(student1.number);printf(n 姓名:”); gets();printf(“n 系名:”); gets(student1.department

21、);p=&student1; printf(“n 学号:%s 姓名:s 所在系: %s”,(*p).number,(*p).name,(*p).department);第32页,共68页,2022年,5月20日,18点55分,星期二4. 用结构体变量的指针作函数参数在函数调用时,可以用结构体变量名做形参和实参,也可以用结构体变量的指针作函数参数。例12.6函数的返回值是结构体变量。#include “stdio.h”struct student char number9; char name8; char department20; ; struct student input(); 第33页

22、,共68页,2022年,5月20日,18点55分,星期二main() struct student st1; st1=input(); printf(“n学号:%s 姓名:%s 所在系:%s”, st1.number,st1.department); struct student input() struct student temp;printf(“n学号:”); gets(temp.number);printf(“n姓名:”); gets();printf(“n所在系:”); gets(temp.department);return temp;第34页,共68页,2022年,5月20日,1

23、8点55分,星期二例12.7 用结构体变量名做形参和实参。#include char *s;struct tree int a ; x ;void fun(struct tree t ) t.a=t.a+10;t.s=computer;printf(%d, %sn, x.a, x.s);x.s=minicomputer;main( ) x.a=6;func( x ); 程序运行结果: 16, computer 用结构体变量名 做实参、形参 第35页,共68页,2022年,5月20日,18点55分,星期二12.6 结构体指针与链表链表是一种常见的动态地进行存储分配的数据结构。链表有 “单向链表”

24、、“双向链表”、“循环链表”、“双向循环链表”之分。 1链表结构链表作为一种常用的、能够实现动态存储分配的数据结构。(1)头指针变量 head :指向链表的首结点。(2)每个结点由2个域组成: 数据域:存储结点本身的信息。 指针域:指向后继结点的指针。(3)尾结点的指针域置为“NULL(空)”,作为链表结束的标志。第36页,共68页,2022年,5月20日,18点55分,星期二 2.单向链表 单向链表是按照输入数据的顺序建立的。 它有一个“头指针”(图中为head),指向第一个元素; 每一个元素称为“结点”,每个结点包括两个域:数据域和指下一个结点的指针域; 最后一个元素的指针域为 “NULL

25、”(“空地址”),表示链表的结束,称为“表尾”。 下图是一个“单向链表”的示例。第37页,共68页,2022年,5月20日,18点55分,星期二3对链表的基本操作对链表的基本操作有:创建、检索(查找)、插入、删除和修改等。(1)创建链表是指,从无到有地建立起一个链表,即往空链表中依次插入若干结点,并保持结点之间的前驱和后继关系。(2)检索操作是指,按给定的结点索引号或检索条件,查找某个结点。如果找到指定的结点,则称为检索成功;否则,称为检索失败。(3)插入操作是指在链表中增加一个新结点,使线性表的长度增1,并且保持原有逻辑关系。(4)删除操作是指在链表中删除一个结点,线性表的长度减1,且保持原

26、有逻辑关系。第38页,共68页,2022年,5月20日,18点55分,星期二 4.简单链表的建立 例12.8简单链表的建立,将已经赋值的结构变量student1和student2链起来,构成一个具有2个结点的单链表。程序如下: #include “stdio.h”struct student char number9; char name8; char department20; struct student *next;第39页,共68页,2022年,5月20日,18点55分,星期二main() struct studentstudent1=“M43000148”,”egg”,” 计科系”,

27、student2=“M43000101”,”csc”,”计科系”,*head,*p; head=&student1; student1.next=&student2; /*指向下一个学生信息存放的首地址*/ student2.next=NULL; p=head;while(p.next) printf(“学号:%s 姓名:%s 所在系: %sn”,p-number,p-name,p-department);p=p-next;第40页,共68页,2022年,5月20日,18点55分,星期二 6. 用于动态存储分配的函数(1)malloc函数 函数调用方式:void *malloc(unsigne

28、d size) 函数说明:malloc()函数的原型在stdlib.h和alloc.h中。 函数功能:从系统中请求分配大小为size的内存单元,如果成功则返回指向该区域的首字节的指针;如果分配失败则返回一个空指针NULL,即地址为。 malloc()函数的返回值是一个无类型指针,其特点是可以指向任何类型的数据。例如以下2条语句: int pa ; pa=( int *)malloc( sizeof (int)*5 ); 执行上述语句后,指针变量pa ,指向内存中1个由10字节存储单元的首字节。第41页,共68页,2022年,5月20日,18点55分,星期二(2)free函数函数调用方式:voi

29、d free (void *p);函数说明:free()函数原型在stdlib.h, alloc.h中。函数功能:释放p所指的内存块,并将它返回给堆,以便这些内存成为再分配时的可用内存。p 是调用malloc() 函数的返回值。该函数无返回值。 原则上,在使用malloc()函数申请的内存存储块,操作结束后,应及时使用free()函数予以释放。尤其是循环使用malloc()函数时,如果不及时释放不再使用的内存块,很可能很快就耗尽系统的内存资源,从而导致程序无法继续运行第42页,共68页,2022年,5月20日,18点55分,星期二(3)calloc函数函数调用方式:void *calloc(u

30、nsigned num,unsigned size);函数说明:calloc函数原型在stdlib.h和alloc.h中。 函数功能:从系统中请求分配大小为num*size大小的内存单元,如果如果成功则返回指向该区域的首字节的指针;如果分配失败则返回一个空指针,即地址为。(4)realloc函数函数调用方式:void realloc(void *p,unsigned newsize)函数说明:realloc()函数原型在stdlib.h和alloc.h中函数功能:把p所指向的已分配的内存大小变成由newsize所确定的新的大小。第43页,共68页,2022年,5月20日,18点55分,星期二例

31、12.9动态存储分配的函数使用实例。#include #include #include #include void main()char *str1, *str2; if(str1=(char *)malloc(10)!=NULL) gets(str1); if(str2=(char *)calloc(10,sizeof(char)!=NULL) strcpy(str2,str1); printf(“str1:%sn str2:%sn”,str1,str2); free(str1); recalloc(str2,0); return;第44页,共68页,2022年,5月20日,18点55分,

32、星期二7. 动态申请结点,建立单链表 动态申请结点,建立单链表有两个关键问题:第一,结点的存储空间必须是由程序来请求分配;第二,结点之间必须形成链状。 8. 建立单链表算法 (1)建立头结点:指针 p 指向向系统申请的第一个结点 ,输入结点数据域的数据;头指针 head和指针rear指向头结点;头指针 head ,指向链表的头结点,作函数返回值。 第45页,共68页,2022年,5月20日,18点55分,星期二(2)在头结点后增加第2个结点,第3个结点 p 指向申请的第2个新结点,用rear-next=p;实现连接第2个新结点; rear =p; rear指向第2新结点; p 指向申请的第3个

33、新结点,用rear-next=p;实现连接第3个新结点; rear =p; rear指向第3新结点; (3)rear指向链表的尾结点时, rear-next=NULL 。第46页,共68页,2022年,5月20日,18点55分,星期二例12.10用动态存储分配函数,动态申请结点,建立单链表程序。#include “stdio.h”struct studentchar number9 ,name8 ,department20;struct student *next; ;main() struct student*head=NULL,*p,*last; char Is_exit; while(1

34、) p=(struct student *)malloc(sizeof(struct student); if(p=NULL) continue; /*如果申请失败,继续申请直到成功为止*/第47页,共68页,2022年,5月20日,18点55分,星期二 printf(“n学号:”); gets(p-number);printf(“n姓名:”); gets(p-name);printf(“n所在系:”); gets(p-department); p-next=NULL;if (head= NULL) head=p; last=p; continu; else last-next=p; last

35、=p; printf(“n是否继续录入数据:(Y/N)”);scanf(“%c”, Is_exit);if (Is_exit=y| Is_exit=Y) continu; else break; last-next= NULL;第48页,共68页,2022年,5月20日,18点55分,星期二 9.删除一个新结点 基本思路:通过单链表的头指针,顺着结点的指针域找到要删除结点,将该结点从单链表中断开。 在有序的单链表中删除一个新结点,存在的4种情况。 (1)为空表,无结点删除 (2)删除第一个结点 ,头指针指向第二个结点 (3)删除链表中的结点 (4)删除最后一个结点(表尾结点) 第49页,共68

36、页,2022年,5月20日,18点55分,星期二 10.插入一个新结点 单链表中插入一个新结点,可能存在的4种情况。 (1)为空表,插入一个新结点,构成只有一个结点的链表 (2)在第一个结点前插入,插入新结点为头结点 (3)顺着结点的指针域找到第i个结点,将新结点插入到第i个结点之后,链表长度增加1 (4)在最后一个结点后插入,新结点为尾结点 第50页,共68页,2022年,5月20日,18点55分,星期二12.7 共 用 体 1共用型概念 使几个不同的变量占用同一段内存空间的结构称为共用型。 2共用类型的定义与结构类型的定义类似 union 共用类型名 成员列表 ; 3共用变量的定义与结构变

37、量的定义类似 直接定义形式如下: 间接定义形式如下: union 共用体名 union 共用体名 分量表 分量表 ; 变量表 ; union 共用体名 变量表;第51页,共68页,2022年,5月20日,18点55分,星期二共用变量的引用与结构变量一样只能逐个引用共用变量的成员 printf( “%d”, a); 错误 scanf( “%d”,&a); 错误访问变量 a 各成员的格式为:a. i、a.ch、a.f scanf( “d”,&a.i); printf( “%dn”,a.i);5.共用体与结构体相似之处(1)都是由不同类型的数据项组成一个(2)都只能对分量进行操作和引用。第52页,共

38、68页,2022年,5月20日,18点55分,星期二例12.12对共用体变量的使用struct int num; 编号 char name10; 姓名 char sex; 性别 char job; 类别:s 学生 t 教师 union int ciass; 班号 char position10; 职务 category; per 2;构造类型(数组、结构体、共用体)的定义可以嵌套第53页,共68页,2022年,5月20日,18点55分,星期二 main() int n, i; for ( i=0;i2;i+) scanf(“%d%s%c%c”,&peri.num, , &pe

39、ri.sex,&peri.job); if ( peri.job= =s) scanf( “%d”,&peri.category.class); else if ( peri.job= =t) scanf( “%s”,peri.category.position); else printf( “input error!”); prints( “n”);第54页,共68页,2022年,5月20日,18点55分,星期二6共用变量特点(1)系统采用覆盖技术,实现共用变量各成员的内存共享,所以在某一时刻,存放的和起作用的是最后一次存入的成员值。(2)由于所有成员共享同一内存空间,故共用变量与其各成员的

40、地址相同。 (3)不能对共用变量进行初始化(注意:结构变量可以);也不能将共用变量作为函数参数,以及使函数返回一个共用数据,但可以使用指向共用变量的指针。(4)共用类型可以出现在结构类型定义中,反之亦然。第55页,共68页,2022年,5月20日,18点55分,星期二 struct memb float v;int n;char c; sa1; sa1占7个字 节内存空间union memb float v;int n;char c; usa2; usa2占4个字节内存空间 100110051007vnc2001vnc200220032004 共用变量占用的内存空间,等于最长成员的长度,而不是

41、各成员长度之和。第56页,共68页,2022年,5月20日,18点55分,星期二 7、共用体与结构体的主要区别 (1)结构体变量 占用空间是各成员所占空间之总和; 共用体变量 占存储空间是各成员中所占空间最大者。 (2)结构体变量 各成员占用内存中一片连续的存储区,各成员的地址互不相同;共用体变量各成员在内存中所占空间的起始地址相同。 (3)结构体变量的各个分量在任何时刻都同时存在,且可同时引用。共用体变量的各个分量在同一时刻只存在其中一个,也只能引用其中的一个。 (4)结构体变量可以初始化,共用体变量不能初始化。第57页,共68页,2022年,5月20日,18点55分,星期二例12.13共用

42、体的内存使用。#include void main() union int i; char string2; a; a.i=24897;printf(“i=%d,string1=%c”,a.i,a.string0); printf(“string2=%cn”, a.string1);string0=0; string1=0;printf(“i=%d,string1=%c”,a.i,a.string0); printf(“string2=%cn”, a.string1);程序运行结果: i=24897,string1=A,string2=ai=8224,string1=0,string2=0第5

43、8页,共68页,2022年,5月20日,18点55分,星期二例12.14 将共用体变量作为函数的参数。#include union testint i;char string2; a;void show(union test a) printf(“i=%d,string1=%c”,a.i,a.string0); printf(“string2=%cn”, a.string1); return; void main() a.i=24897; show(a);string0=0; string1=0;show(a); return;程序运行结果:I=24897,string1=A,string2=

44、aI=8224,string1=0,string2=0第59页,共68页,2022年,5月20日,18点55分,星期二1定义格式: enum 枚举类型名 取值表;例如, enum weekdays Sun,Mon,Tue,Wed,Thu,Fri,Sat; 中的标识符称为枚举常量。它只能为标识符,不能为数字常量或字符常量2枚举变量的定义(与结构体变量类似)(1)间接定义例如,enum weekdays w1,w2;(2)直接定义例如, enum weekdays Sun,Mon,Tue,Wed,Thu,Fri,Sat w1,w2 ; 12.8 枚 举 类 型第60页,共68页,2022年,5月20日,18点55分,星期二3枚举型使用说明(1)枚举型仅适应于取值有限的数据。 例如: 周天, 年个月。(2)取值表中的值为枚举元素,其含义由程序解释。 例如,不是写成“Sun”就自动代表“星期天”。事实上, 枚举元素用什么表示都可以。(3)枚举型变量 w1 , w2 只能在定义的值表中取其中一个枚举常量作为当前值。第61页,共68页,2022年,5月20日,18点55分,星期二(4)枚举元素作为常量是有值的。 定义时顺序号,从开始,所以枚举元素可以进

温馨提示

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

最新文档

评论

0/150

提交评论