共用體和枚舉類型基礎知識_第1頁
共用體和枚舉類型基礎知識_第2頁
共用體和枚舉類型基礎知識_第3頁
共用體和枚舉類型基礎知識_第4頁
共用體和枚舉類型基礎知識_第5頁
已閱讀5頁,還剩10頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、共用體和枚舉類型基礎知識C程 序 設 計CONTENTS 共用體類型 枚舉類型 總結共用體1.共用體l 構造數據類型,也叫構造數據類型,也叫聯合體聯合體l 用途:用途:使幾個不同類型的變量共占一段內存使幾個不同類型的變量共占一段內存( (相互覆蓋相互覆蓋) ) 共用體類型的定義共用體類型的定義 union 共用體類型名共用體類型名 數據類型名數據類型名1 成員名成員名1; 數據類型名數據類型名2 成員名成員名2; 數據類型名數據類型名n 成員名成員名n;union UData short i; char ch; float f;chifsizeof(union UData) = sizeof(

2、f) 共用體的大小是共用體的大小是成員中占內存最成員中占內存最大的成員的大小大的成員的大小 chi共占共占7字節字節struct SData short i; char ch; float f; 共用體類型變量的定義共用體類型變量的定義形式一形式一:union data short i; char ch; float f; a, b;形式二形式二:union data short i; char ch; float f; ; union data a, b, *p, d3;形式三形式三:union short i; char ch; float f; a,b,c;共用體共用體變量任何時刻變量任

3、何時刻只有只有一個成員一個成員存在存在共用體共用體變量定義變量定義分配分配內存內存, ,長度長度= =最長成員最長成員所占所占字節數字節數1.共用體 共用體變量的引用共用體變量的引用共用體變量名共用體變量名. .成員名成員名共用體指針名共用體指針名-成員名成員名 或或 ( (* *共用體指針名共用體指針名).).成員成員名名 a.i a.ch a.fp-i p-ch p-f(*p).i (*p).ch (*p).fd0.i d0.ch d0.f1.共用體 共用體變量的初始化賦值共用體變量的初始化賦值 定義共用體變量時可以對變量賦初值,但定義共用體變量時可以對變量賦初值,但只能對變量的一個成員賦

4、初值只能對變量的一個成員賦初值,不,不可像結構體變量那樣對所有的成員賦初值。可像結構體變量那樣對所有的成員賦初值。 union UData short i; char ch; float f;union UData data = 10; /10賦給成員賦給成員iunion UData data = A; /A賦給成員賦給成員i,即,即i的值為的值為65(A的的ASCII碼)碼)union UData data = 10, A, 12.5; /錯誤,錯誤, 中只能有一個值中只能有一個值union UData data = 10; /錯誤,初值必須用錯誤,初值必須用 括起來括起來1.共用體1.共用

5、體 幾點說明:幾點說明: (1 1)由于共用體變量的各成員共享同一地址的內存單元,所以在對其成員賦值)由于共用體變量的各成員共享同一地址的內存單元,所以在對其成員賦值的某一時刻,的某一時刻,存放的和起作用的將是最后一次存入的成員值。存放的和起作用的將是最后一次存入的成員值。 (2 2)對共用體變量的某個成員賦值時,也改變了其它成員的值,因為它們共享)對共用體變量的某個成員賦值時,也改變了其它成員的值,因為它們共享一個內存地址。一個內存地址。 (3)由于共用體變量所有成員共享同一內存空間,因此共用體變量與其各成)由于共用體變量所有成員共享同一內存空間,因此共用體變量與其各成員的地址相同。員的地址

6、相同。 union UData data;data.i = 10; data.ch = A; data.f = 12.5; /則則data.f的值才是有效的成員的值。的值才是有效的成員的值。union UData data;data.i = 10; data.ch = A; /則則data的成員的成員i的值將變為的值將變為65(A的的ASCII碼值)碼值)union UData data; /則則&data與與&data.i、&data.ch、&data.f均相同均相同枚舉類型2. 枚舉類型 如果一個變量只有幾種可能的值,則可定義成枚舉類型。所謂如果一個變量只有

7、幾種可能的值,則可定義成枚舉類型。所謂“枚舉枚舉”,顧名思義,顧名思義,就是把這種類型數據可取的值一一列舉出來。,就是把這種類型數據可取的值一一列舉出來。一個枚舉型變量取值僅限于列出值的范一個枚舉型變量取值僅限于列出值的范圍圍。enum 枚舉類型名枚舉類型名 枚舉元素表枚舉元素表;由多個標識符組成,標識符之間用逗號分開 定義枚舉類型:定義枚舉類型:enum weekday sun, mon, tue, wed, thu, fri, sat;定義枚舉類型變量:定義枚舉類型變量:enum weekday today, nextday;enum weekday sun, mon, tue, wed,

8、 thu, fri, sat today, nextday;取值取值枚舉類型的定義形式為:枚舉類型的定義形式為:2. 枚舉類型enum weekday sun, mon, tue, wed, thu, fri, sat today, nextday;0123456運行結果:運行結果:today = 0 C C編譯對枚舉元素實際上按編譯對枚舉元素實際上按整型常量整型常量處理,當遇到枚舉元素列表時,編譯處理,當遇到枚舉元素列表時,編譯程序就把其中程序就把其中第一個標識符賦第一個標識符賦0 0值,第二、三、值,第二、三、個標識符依此賦個標識符依此賦1,2,1,2,。 2. 枚舉類型 enum wee

9、kday sun = 7, mon = 1, tue, wed, thu, fri, sat;定義枚舉類型的好處:定義枚舉類型的好處: 用標識符表示數值增加了程序的可讀性用標識符表示數值增加了程序的可讀性 清晰清晰不清晰不清晰 可限制了變量的取值范圍可限制了變量的取值范圍 如如today只能取只能取sunsat中的值中的值 注意:注意:枚舉元素是常量,在程序中不可對它賦值總結3.總結結構體、共用體及枚舉類型都是用戶自定義的數據類型,它們均屬于構造數據類型,是用戶定義新數據類型的重要手段。結構體和共用體有很多的相似之處,它們都由成員組成。成員可以具有不同的數據類型。成員的表示方法相同。都可用間接和直接兩種方式作變量說明。在結構體中,各成員都占有自己的內存空間,一個結構體變量的總長度等于所有成員長度之和。在共用體中,所有成員不

溫馨提示

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

評論

0/150

提交評論