C語言程序設(shè)計(jì) 課件 任務(wù)4.4 枚舉和共用體_第1頁
C語言程序設(shè)計(jì) 課件 任務(wù)4.4 枚舉和共用體_第2頁
C語言程序設(shè)計(jì) 課件 任務(wù)4.4 枚舉和共用體_第3頁
C語言程序設(shè)計(jì) 課件 任務(wù)4.4 枚舉和共用體_第4頁
C語言程序設(shè)計(jì) 課件 任務(wù)4.4 枚舉和共用體_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

C語言程序設(shè)計(jì)基礎(chǔ)與實(shí)踐模塊四編程高級應(yīng)用任務(wù)4.4枚舉和共用體C語言程序設(shè)計(jì)基礎(chǔ)與實(shí)踐課程組04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS任務(wù)4.4枚舉和共用體01問題引入05技能點(diǎn)檢測一問題引入有一類團(tuán)體型的數(shù)據(jù)集合,比如一周7天的名稱,天干地支名稱,這些名稱往往是組團(tuán)使用的,或者有些特殊使用場合的信息。這類信息在C語言里可以使用自定義的枚舉型來進(jìn)行組織設(shè)計(jì)。此外,現(xiàn)實(shí)生活中,我們裝很多東西時(shí),一般是用大箱子裝大東西,小箱子裝小東西,但是也有些時(shí)候我們只需要裝一個(gè)東西,但是不確定要裝的東西是多大,我們就準(zhǔn)備一個(gè)大箱子,小的可以裝,大的也可以裝,這樣就不必準(zhǔn)備大大小小的多個(gè)箱子。這類信息在C語言里可以使用共用體來進(jìn)行組織設(shè)計(jì)。那么枚舉和共用體在使用時(shí)有哪些注意事項(xiàng)呢?04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS01問題引入05技能點(diǎn)檢測任務(wù)4.4枚舉和共用體二技能點(diǎn)分析1.枚舉和共用體類型2.枚舉的遍歷3.共用體的定義與使用4.訪問共用體成員學(xué)習(xí)目標(biāo)1.什么是枚舉?2.枚舉可以遍歷么?3.什么是共用體?4.結(jié)構(gòu)體和共用體的區(qū)別?學(xué)期預(yù)習(xí)04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS01問題引入05技能點(diǎn)檢測任務(wù)4.4枚舉和共用體枚舉是C語言中的一種基本數(shù)據(jù)類型,它可以讓數(shù)據(jù)更簡潔,更易讀。第一個(gè)枚舉成員的默認(rèn)值為整型的0,后續(xù)枚舉成員的值在前一個(gè)成員上加1。共用體是一種特殊的數(shù)據(jù)類型,允許您在相同的內(nèi)存位置存儲(chǔ)不同的數(shù)據(jù)類型。您可以定義一個(gè)帶有多成員的共用體,但是任何時(shí)候只能有一個(gè)成員帶有值。共用體提供了一種使用相同的內(nèi)存位置的有效方式。三技能點(diǎn)詳解——1

枚舉類型定義與使用枚舉語法定義格式為:enum枚舉名{枚舉元素1,枚舉元素2,……};enumDAY{MON=1,TUE,WED,THU,FRI,SAT,SUN};第一個(gè)枚舉成員的默認(rèn)值為整型的0,后續(xù)枚舉成員的值在前一個(gè)成員上加1。我們在這個(gè)實(shí)例中把第一個(gè)枚舉成員的值定義為1,第二個(gè)就為2,enumDAY{MON,TUE,WED=7,THU,FRI,SAT,SUN};前面我們只是聲明了枚舉類型,接下來我們看看如何定義枚舉變量。我們可以通過以下三種方式來定義枚舉變量。(1)先定義枚舉類型,再定義枚舉變量enumDAY{MON=1,TUE,WED,THU,FRI,SAT,SUN};enumDAYday;(2)定義枚舉類型的同時(shí)定義枚舉變量enumDAY{MON=1,TUE,WED,THU,FRI,SAT,SUN}day;(3)省略枚舉名稱,直接定義枚舉變量enum

{MON=1,TUE,WED,THU,FRI,SAT,SUN}day1;三技能點(diǎn)詳解——2共用體類型定義1)先聲明公用體類型,再聲明公用體變量定了定義共用體,您必須使用union語句,方式與定義結(jié)構(gòu)類似。union語句定義了一個(gè)新的數(shù)據(jù)類型,帶有多個(gè)成員。union語句的格式如下:union

共用體類型名稱{

數(shù)據(jù)類型

成員名1;

數(shù)據(jù)類型

成員名2;……

數(shù)據(jù)類型

成員名n;};unionData{inti;floatf;charstr[20];}; //定義共用體DataunionDatad1; //定義一個(gè)unionData類型變量d1三技能點(diǎn)詳解——2共用體類型定義2)在定義結(jié)構(gòu)體類型的同時(shí)定義結(jié)構(gòu)體變量unionData{inti;floatf;charstr[20];}d1; //定義共用體unionData同時(shí)定義變量d13)共用體成員的訪問與使用為了訪問共用體的成員,我們使用成員訪問運(yùn)算符(.)。成員訪問運(yùn)算符是共用體變量名稱和我們要訪問的共用體成員之間的一個(gè)句號。共用體變量名.成員名三技能點(diǎn)詳解——2

共用體類型定義在下面的例子中,我們會(huì)發(fā)現(xiàn)最先被訪問和賦值的d1.i和d1.f是無法打印出來的,因?yàn)槲覀冏詈笤L問和賦值的d1.str把之前訪問并賦值的成員數(shù)據(jù)都給覆蓋了。#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程序設(shè)計(jì)"); //訪問成員strprintf("d1.i:%d\n",d1.i);printf("d1.f:%f\n",d1.f);printf("d1.s:%s\n",d1.str);

return0;}三技能點(diǎn)詳解——案例圖4.4.1共用體變量d1的內(nèi)部結(jié)構(gòu)

#include

<stdio.h>#include

<stdlib.h>intmain(){/*聲明一個(gè)包括3個(gè)英文顏色的enumcolor數(shù)據(jù)類型*/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("你喜歡的顏色是:藍(lán)色");

break;

default:printf("沒有你喜歡的顏色");}

return0;}/*************************************************************內(nèi)容簡述:定義一個(gè)顏色的英文名稱枚舉變量,根據(jù)用戶輸入的數(shù)值輸出*中文顏色名稱。程序中結(jié)合了枚舉在switch中的使用技術(shù)************************************************************/三技能點(diǎn)詳解——案例圖4.4.1共用體變量d1的內(nèi)部結(jié)構(gòu)

/*************************************************************內(nèi)容簡述:定義一個(gè)存儲(chǔ)3個(gè)不同類型數(shù)據(jù)的共用體變量,根據(jù)用戶輸入*的數(shù)值再輸出。這里每一次賦值后都會(huì)改變變量空間里其他成員值失效,因此*不能再次訪問之前的成員數(shù)據(jù)。************************************************************/#include

<stdio.h>#include

<string.h>unionData{

inti;

floatf;

charstr[20];}; //定義一個(gè)名為Data的共用體數(shù)據(jù)類型

intmain(){

unionDatad1; //定義一個(gè)unionData共用體變量

d1.i=100;printf("d1.i:%d\n",d1.i);//輸入數(shù)據(jù)到共用體變量dataud.f=1000.5;printf("d1.f:%f\n",d1.f);strcpy(d1.str,"C語言程序設(shè)計(jì)");//使用strcpy()函數(shù)寫入字符串

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

return0;}04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS01問題引入05技能點(diǎn)檢測任務(wù)4.4枚舉和共用體四技能點(diǎn)拓展——1將整數(shù)轉(zhuǎn)換為枚舉在C語言中,枚舉類型是被當(dāng)做int或者unsignedint類型來處理的,所以按照C語言規(guī)范是沒有辦法遍歷枚舉類型的。枚舉變量的值就是枚舉類型里面定義的某個(gè)成員的值,而且這個(gè)值是常量。雖然枚舉變量可以與整型數(shù)據(jù)之間進(jìn)行類型轉(zhuǎn)換,但不是把整型數(shù)據(jù)直接賦值給枚舉行變量例如案例4.4.1中的枚舉型變量enumcoloruser_color,如果進(jìn)行如下操作是非法的:

user_color=2;但是,C語言可以將整數(shù)轉(zhuǎn)換為枚舉來使用:user_color=(enumcolor)2;四技能點(diǎn)拓展——2共用體類型數(shù)據(jù)使用注意事項(xiàng)共用體類型數(shù)據(jù)具有兩個(gè)特點(diǎn):(1)同一個(gè)內(nèi)存段可以用來存放幾種不同類型的成員,但是在同一時(shí)刻只能存放其中的一種,而不是同時(shí)存放幾種。換句話說,同一時(shí)刻只有一個(gè)成員起作用,其他的成員失效,即不是同時(shí)都存在和有效的。(2)共用體變量中起作用的成員是最后一次存放的成員,在存入一個(gè)新成員后,原有成員就失效。共用體變量的地址和它的各成員的地址都是同一地址。以下用法就是錯(cuò)誤的unionDatad1=10;//定義變量同時(shí)給變量賦值這會(huì)導(dǎo)致錯(cuò)誤提示:errorC2440:“初始化”:無法從“int”轉(zhuǎn)換為“Data”四技能點(diǎn)拓展——2共用體類型數(shù)據(jù)使用注意事項(xiàng)同時(shí)需要注意一些特殊要求:(1)不能對共用體變量名賦值,也不能企圖引用

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論