程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> iOS開發入門 ☞ C語言(結構體、聯合體、枚舉)

iOS開發入門 ☞ C語言(結構體、聯合體、枚舉)

編輯:關於C++

iOS開發入門 ☞ C語言(結構體、聯合體、枚舉)。本站提示廣大學習愛好者:(iOS開發入門 ☞ C語言(結構體、聯合體、枚舉))文章只能為提供參考,不一定能成為您想要的結果。以下是iOS開發入門 ☞ C語言(結構體、聯合體、枚舉)正文


結構體 1. 概念

  結構體:自定義數據類型。 

  結構體變量是由多個其他變量組成的復合變量。多個變量的類型可以不同,而且每一個變量都有自己的名字。

  

2. 結構體定義
  • 一般的定義方式:

  

  • 常用的定義方式:

  

3. 結構體變量的初始化

  

4. 賦值(逐個賦值)  

    

  結構體成員變量的訪問有兩種形式:一種是用符號"."(通用),一種是用符號"->"(一般是結構體指針變量用)。

5. 結構體所占內存空間

  關於結構體內存對齊規則: #pragma pack(n) 這個宏表示設置為n字節對齊(VC6默認8字節對齊)

  • 對於結構的各個成員,第一個成員位於偏移為0的位置,以後每個數據成員的偏移量必須是min(n, 該成員的大小)的倍數。(比如int在32位機為4字節,則要從4的整數倍地址開始存儲)。
  • 在數據成員完成各自對齊之後,結構(或聯合)本身也要進行對齊,總大小必須是min(n, 最大成員的大小)的倍數,不足的要補齊。
  • 結構體作為成員:如果一個結構裡有某些結構體成員,則結構體成員要從其內部最大元素大小的整數倍地址開始存儲。(struct a裡存有struct b,b裡有char,int,double等元素,那b應該從8的整數倍開始存儲。) 

   首先明確一點:結構體中的成員是從低地址向高地址排列的,這一點和數組類似,即排在結構體前面的成員占用內存低地址,排在結構體後面的成員占用內存高地址。

   

   

   

   

6. 構造類型: 數組/ 結構體
  • 數組: 是用於保存一組相同類型的數據
  • 結構體: 是用於保存一組不同類型的數據
聯合體 union 1. 概念

  union,中文名“聯合體、共用體”。聯合體的用法、語法和結構體非常相似。

  • 聯合體所占用的內存空間大小等於最長的成員所占用的字節數。
  • 聯合中所有的成員都共享同一片內存空間。(聯合體使用了覆蓋技術,幾個成員變量相互覆蓋,從而使幾個不同變量共占同一段內存)
  • 聯合體只能存放一個成員變量的值。(對新的成員變量賦值,就會把原來成員變量的值覆蓋掉)
  • 聯合體union的存放順序是所有成員都從低地址開始存放的。
2. 定義

  聯合語法格式:(與結構體一樣)

  

  //共用體 data 中,成員 i 所占用的空間最大,為 4 個字節,所以 data 類型的變量(也就是a、b、c)也占用4個字節的內存。

    

  • 對某一個成員賦值,會覆蓋其他成員的值(因為他們共享一塊內存。但前提是成員所占字節數相同,當成員所占字節數不同時只會覆蓋相應字節上的值,比如對char成員賦值就不會把整個int成員覆蓋掉,因為char只占一個字節,而int占四個字節)

   

  • 為什麼要引入聯合體:

結構體內存空間的分配是粗放的,不管用不用,全分配;聯合體內存使用更為精細靈活,節省內存空間。

枚舉 定義:

  C語言提供了一種枚舉(enum)類型,可以列出所有可能的取值。定義形式為:

    enum 枚舉名{ 標識符1[=整型常數], 標識符2[=整型常數], ... 標識符n[=整型常數]};

    注意:枚舉值是標識符,要注意命名格式!

  

  

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved