《C語言程序設(shè)計案例教程》課件10.3 共用體_第1頁
《C語言程序設(shè)計案例教程》課件10.3 共用體_第2頁
《C語言程序設(shè)計案例教程》課件10.3 共用體_第3頁
《C語言程序設(shè)計案例教程》課件10.3 共用體_第4頁
《C語言程序設(shè)計案例教程》課件10.3 共用體_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

共用體LOGO掌握共用體的定義、共用體變量的使用、共用體數(shù)組的定義及引用TeacherteachingdesignCONTENTS

目錄共用體的定義共用體的使用共用體變量測試共用體的定義PART01幾個變量的存儲字節(jié)數(shù)不同,但可以相互覆蓋,需要引用哪個變量就引用哪個變量,幾個變量不可能同時存在。特點共用體變量中起作用的成員是最近一次得到賦值的哪個成員。結(jié)論共用體是指把幾個不同類型的變量存儲在同一個地址開始的內(nèi)存單元中的一種結(jié)構(gòu)類型。概念某一時刻只有一個成員分量存在并發(fā)揮作用,其他成員分量就不存在共用體的定義①先定義共用體類型②再定義公用體變量。定義共用體類型變量的步驟定義公用體類型的格式是:union<公用體類型名>{<類型標識符><成員名1>;…<類型標識符><成員名n>;};公用體的定義(二)在定義公用體類型的同時定義公用體變量union<公用體類型名>{<類型標識符><成員名1>;…<類型標識符><成員名n>;}<公用體變量表>;(一)先定義公用體類型再定義變量名,再定義公用體類型變量unionstudent{charch;charno;intage;floatscore;};unionstudentstud1,stud2;例如:共用體的定義方式uniondata{inti;charch;floatf;};從定義形式上來看,它同結(jié)構(gòu)體極為相似。所不同的是它說明的幾個成員不像結(jié)構(gòu)體那樣順序存儲,而是疊放在同一個地址開始的空間上,如右圖所示:共用體類型的長度(總字節(jié)數(shù))為最大成員所占空間的長度共用體說明提示公用體類型的存儲特點共用體變量的使用PART02<公用體變量名>.<成員名>成員的引用格式“.”是成員運算符,表示對公用體變量的哪個成員進行引用,成員運算符的優(yōu)先級在所有運算中是最高的。共用體變量的引用共用體變量中起作用的成員是最后一次存放的成員,在存入一個新的成員后原有的成員就失去作用,聯(lián)合體(union)中是各變量是“互斥”的。2不能對共用體變量名賦值,也不能引用變量名來得到一個值,也不能在定義共用體變量時對它初始化。4共用體變量的地址和它的各成員的地址都是同一地址添加標題內(nèi)容3同一個內(nèi)存段可以用來存放幾種不同類型的成員,但在每一瞬間能存放其中一種,而不是同時存放幾種。1公用體數(shù)據(jù)的特點不能把共用體變量作為函數(shù)參數(shù),也不能作為返回值進行傳遞。但可以使用指向共用體變量的指針共用體類型可以出現(xiàn)在結(jié)構(gòu)體類型定義中,也可以定義共用體數(shù)組結(jié)構(gòu)體也可以出現(xiàn)在共用體類型定義中(既可以相互嵌套),數(shù)組也可以作為共用體的成員。公用體數(shù)據(jù)的特點56案例分析

交流提升PART03unionLIC{longa;intb;charc;};main(){unionLICu;u.a=0x12345678;printf(“Long_value:%lx\n”,u.a);printf(“Low_16_value:%x\n”,u.b);printf(“Low_8_value:%x\n”,u.c);}輸出一個長整數(shù)的低8位和低16位的值案例分析

交流提升長整數(shù)的四個字節(jié)在內(nèi)存中的安排是高位占高字節(jié),低位占低字節(jié)。而共用體變量的各成員項的存儲空間都是從低字節(jié)開始占用u.a的值是長整數(shù)0x12345678,它的二進制形式為00010010001101000101011001111000,在內(nèi)存中存儲形式如圖所示:分析Long_value:12345678Low_16_value:5678Low_8_value:78運行結(jié)果案例分析

交流提升Intx.b=1234Low8bytesis:34High8bytesis:12Intx.b=abcd運行結(jié)果structst{charlow;charhigh;};unionun{structsta;intb;};在共用體中使用結(jié)構(gòu)體類型的成員。main(){unionunx;x.b=0x1234;printf("Intx.b=%x\n",x.b);printf("Low8bytesis:%x\n",x.a.low);printf("High8bytesis:%x\n",x.a.high);x.a.low=0xcd;x.a.high=0xab;printf("Intx.b=%x\n",x.b);}主函數(shù)案例分析

交流提升仿真演練

體驗探索PART04以下程序運行后的輸出結(jié)果是(

)#include<stdio.h>main(){union{intk;chari[2];}s;s.i[0]=0x39;s.i[1]=0x38;printf("%c\n",s.k);}仿真演練

體驗探索若有下面的說明和定義,則sizeof(structaa)的值是()structaa{intr1;doubler2;floatr3;unionuu{charu1[5];longu2[2];}ua;}mya;A)30B)29C)24D)22仿真演練

體驗探索

A)編譯出錯B)程序?qū)㈨樌幾g、連接執(zhí)行C)能順利通過編譯、連接,但不能執(zhí)行D)能順利通過編譯、但連接出錯則會發(fā)生的情況是(

)unionabc{intx;chary;};unionabcs1,s2;若程序中有下面的說明和定義仿真演練

體驗探索A)4

B)5C)

6

D)0unionmyun{struct

溫馨提示

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

評論

0/150

提交評論