C语言程序设计 课件 任务4.4 枚举和共用体_第1页
C语言程序设计 课件 任务4.4 枚举和共用体_第2页
C语言程序设计 课件 任务4.4 枚举和共用体_第3页
C语言程序设计 课件 任务4.4 枚举和共用体_第4页
C语言程序设计 课件 任务4.4 枚举和共用体_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

C语言程序设计基础与实践模块四编程高级应用任务4.4枚举和共用体C语言程序设计基础与实践课程组04技能点拓展03技能点详解02技能点分析目录CONTENTS任务4.4枚举和共用体01问题引入05技能点检测一问题引入有一类团体型的数据集合,比如一周7天的名称,天干地支名称,这些名称往往是组团使用的,或者有些特殊使用场合的信息。这类信息在C语言里可以使用自定义的枚举型来进行组织设计。此外,现实生活中,我们装很多东西时,一般是用大箱子装大东西,小箱子装小东西,但是也有些时候我们只需要装一个东西,但是不确定要装的东西是多大,我们就准备一个大箱子,小的可以装,大的也可以装,这样就不必准备大大小小的多个箱子。这类信息在C语言里可以使用共用体来进行组织设计。那么枚举和共用体在使用时有哪些注意事项呢?04技能点拓展03技能点详解02技能点分析目录CONTENTS01问题引入05技能点检测任务4.4枚举和共用体二技能点分析1.枚举和共用体类型2.枚举的遍历3.共用体的定义与使用4.访问共用体成员学习目标1.什么是枚举?2.枚举可以遍历么?3.什么是共用体?4.结构体和共用体的区别?学期预习04技能点拓展03技能点详解02技能点分析目录CONTENTS01问题引入05技能点检测任务4.4枚举和共用体枚举是C语言中的一种基本数据类型,它可以让数据更简洁,更易读。第一个枚举成员的默认值为整型的0,后续枚举成员的值在前一个成员上加1。共用体是一种特殊的数据类型,允许您在相同的内存位置存储不同的数据类型。您可以定义一个带有多成员的共用体,但是任何时候只能有一个成员带有值。共用体提供了一种使用相同的内存位置的有效方式。三技能点详解——1

枚举类型定义与使用枚举语法定义格式为:enum枚举名{枚举元素1,枚举元素2,……};enumDAY{MON=1,TUE,WED,THU,FRI,SAT,SUN};第一个枚举成员的默认值为整型的0,后续枚举成员的值在前一个成员上加1。我们在这个实例中把第一个枚举成员的值定义为1,第二个就为2,enumDAY{MON,TUE,WED=7,THU,FRI,SAT,SUN};前面我们只是声明了枚举类型,接下来我们看看如何定义枚举变量。我们可以通过以下三种方式来定义枚举变量。(1)先定义枚举类型,再定义枚举变量enumDAY{MON=1,TUE,WED,THU,FRI,SAT,SUN};enumDAYday;(2)定义枚举类型的同时定义枚举变量enumDAY{MON=1,TUE,WED,THU,FRI,SAT,SUN}day;(3)省略枚举名称,直接定义枚举变量enum

{MON=1,TUE,WED,THU,FRI,SAT,SUN}day1;三技能点详解——2共用体类型定义1)先声明公用体类型,再声明公用体变量定了定义共用体,您必须使用union语句,方式与定义结构类似。union语句定义了一个新的数据类型,带有多个成员。union语句的格式如下:union

共用体类型名称{

数据类型

成员名1;

数据类型

成员名2;……

数据类型

成员名n;};unionData{inti;floatf;charstr[20];}; //定义共用体DataunionDatad1; //定义一个unionData类型变量d1三技能点详解——2共用体类型定义2)在定义结构体类型的同时定义结构体变量unionData{inti;floatf;charstr[20];}d1; //定义共用体unionData同时定义变量d13)共用体成员的访问与使用为了访问共用体的成员,我们使用成员访问运算符(.)。成员访问运算符是共用体变量名称和我们要访问的共用体成员之间的一个句号。共用体变量名.成员名三技能点详解——2

共用体类型定义在下面的例子中,我们会发现最先被访问和赋值的d1.i和d1.f是无法打印出来的,因为我们最后访问和赋值的d1.str把之前访问并赋值的成员数据都给覆盖了。#include

"stdio.h"#include

"string.h"unionData{

inti;

floatf;

chars[100];};intmain(){unionDatad1; //定义共用体unionData变量datad1.i=10; //访问成员i并赋值d1.f=100.0; //访问成员f并赋值strcpy(d1.s,"C程序设计"); //访问成员strprintf("d1.i:%d\n",d1.i);printf("d1.f:%f\n",d1.f);printf("d1.s:%s\n",d1.str);

return0;}三技能点详解——案例图4.4.1共用体变量d1的内部结构

#include

<stdio.h>#include

<stdlib.h>intmain(){/*声明一个包括3个英文颜色的enumcolor数据类型*/enumcolor{red=1,green,blue};

enumcoloruser_color; printf("请输入你喜欢的颜色:(1.red,2.green,3.blue):");scanf("%u",&user_color);

switch(user_color)

{

casered: //此处red=1printf("OK!喜欢的颜色是:红色");

break;

casegreen: //此处green=2printf("你喜欢的颜色是:绿色");

break;

caseblue: //此处blue=3printf("你喜欢的颜色是:蓝色");

break;

default:printf("没有你喜欢的颜色");}

return0;}/*************************************************************内容简述:定义一个颜色的英文名称枚举变量,根据用户输入的数值输出*中文颜色名称。程序中结合了枚举在switch中的使用技术************************************************************/三技能点详解——案例图4.4.1共用体变量d1的内部结构

/*************************************************************内容简述:定义一个存储3个不同类型数据的共用体变量,根据用户输入*的数值再输出。这里每一次赋值后都会改变变量空间里其他成员值失效,因此*不能再次访问之前的成员数据。************************************************************/#include

<stdio.h>#include

<string.h>unionData{

inti;

floatf;

charstr[20];}; //定义一个名为Data的共用体数据类型

intmain(){

unionDatad1; //定义一个unionData共用体变量

d1.i=100;printf("d1.i:%d\n",d1.i);//输入数据到共用体变量dataud.f=1000.5;printf("d1.f:%f\n",d1.f);strcpy(d1.str,"C语言程序设计");//使用strcpy()函数写入字符串

printf("d1.str:%s\n",d1.str);

return0;}04技能点拓展03技能点详解02技能点分析目录CONTENTS01问题引入05技能点检测任务4.4枚举和共用体四技能点拓展——1将整数转换为枚举在C语言中,枚举类型是被当做int或者unsignedint类型来处理的,所以按照C语言规范是没有办法遍历枚举类型的。枚举变量的值就是枚举类型里面定义的某个成员的值,而且这个值是常量。虽然枚举变量可以与整型数据之间进行类型转换,但不是把整型数据直接赋值给枚举行变量例如案例4.4.1中的枚举型变量enumcoloruser_color,如果进行如下操作是非法的:

user_color=2;但是,C语言可以将整数转换为枚举来使用:user_color=(enumcolor)2;四技能点拓展——2共用体类型数据使用注意事项共用体类型数据具有两个特点:(1)同一个内存段可以用来存放几种不同类型的成员,但是在同一时刻只能存放其中的一种,而不是同时存放几种。换句话说,同一时刻只有一个成员起作用,其他的成员失效,即不是同时都存在和有效的。(2)共用体变量中起作用的成员是最后一次存放的成员,在存入一个新成员后,原有成员就失效。共用体变量的地址和它的各成员的地址都是同一地址。以下用法就是错误的unionDatad1=10;//定义变量同时给变量赋值这会导致错误提示:errorC2440:“初始化”:无法从“int”转换为“Data”四技能点拓展——2共用体类型数据使用注意事项同时需要注意一些特殊要求:(1)不能对共用体变量名赋值,也不能企图引用

温馨提示

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

评论

0/150

提交评论