結構與聯合

2022-06-02 13:33:11 字數 1871 閱讀 7261

結構體需要注意那些知識點?

(1)陣列是為了更清晰的記錄有限個相同型別的資料資訊而誕生的一種表示形式。

結構體是為了更清晰的記錄乙個具有不同型別屬性特性的物件而誕生的一種表示形式。  

聯合與結構都是由多個不同的資料型別成員組成,但在任何同一時刻,聯合中只存放了乙個被選中的成員,而結構的所有成員都存在。

也就是說結構體是對陣列在「橫向」的擴充。 而聯合是對結構體在「縱向」的收斂。

任何事物的出現都是有一定原因的,而且是可以由邏輯推理而成立的。

(2)在c++中結構體是與類沒有太大的區別。有且僅有的區別就是:struct 預設成員是公有public ,而 class 預設成員是私有private。

(3)結構體的定義。示例**如下:

1

//第一種 定義結構體型別變數名方式:

2struct student //

struct為關鍵字,不能省略。student為定義的型別為結構體的變數名,一般要求"見名知意"3;

11struct student stu1,stu2; //

定義結構體型別變數

1213

14//

第二種 定義結構體型別變數名方式:

15struct student //

struct為關鍵字,不能省略。student為定義的型別為結構體的變數名,一般要求"見名知意"

16 student1,student2;

24//

直接定義結構體型別變數,變數名為student1,student2

2526

27//

第三種 結構體中的成員也可以是某種結構體

28struct date //

日期結構29;

3435

struct student //

struct為關鍵字,不能省略。student為定義的型別為結構體的變數名,一般要求"見名知意"

36;

(4)結構體的賦值。示例**如下:

1

struct student //

struct為關鍵字,不能省略。student為定義的型別為結構體的變數名,一般要求"見名知意"2;

10struct student stu1=

聯合需要注意哪些知識點?

(1)理論知識

聯合(union)與結構的區別是:結構變數的各成員同時被分配了各自獨立的記憶體區,而聯合變數的各個成員的儲存開始位址都相同,

所以在任一時刻聯合變數只能儲存乙個成員。系統為聯合變數分配空間時按需要最大儲存量的成員大小分配記憶體空間。

聯合被稱為一種特殊的類(它因編譯器不能知道成員的型別,而沒有建構函式和析構函式,所以聯合的物件不是由建構函式生成的。故稱特殊的類)。

(2)示例**

1 #include2

using

namespace

std;

3union node4;

8void

main()

9

解析:結構變數的各成員同時被分配了各自獨立的記憶體區,

而聯合變數的各個成員的儲存開始位址都相同,

所以在任一時刻聯合變數只能儲存乙個成員。

聯合體是一種節省空間的類

一種節省記憶體的機制

short a 佔兩個位元組

char ch[2] 佔兩個位元組

那麼,在這裡即就是:只為乙個結構物件分配兩個位元組

當對陣列賦值的時候,可以對同乙個記憶體

通過另外的成員進行訪問

0000 0001 0000 0010 == 2 + 256 = 258

結構與聯合

聚合資料結構 陣列 結構體 結構體值的集合稱為成員 陣列通過下標,結構體通過名字訪問 區別非常重要 結構體與陣列不一樣,並不能替換為指標。結構體屬於標量不能進行加減乘除,但可以賦值 在c語言中,並沒有規定結構體所分配的記憶體是連續的,但是有些編譯器會分配連續的空間給結構體 struct z stru...

結構與聯合

結構和聯合都是由多個不同的資料型別成員組成,但在任何同一時刻,聯合中只存放了乙個被選中的成員 所有成員共用一塊位址空間 而結構的所有成員都存在 不同成員的存放位址不同 對於聯合的不同成員賦值,將會對其它成員重寫,原來成員的值就不存在了,而對於結構的不同成員賦值是互不影響的。include union...

結構體列舉與聯合

基本介紹 struct是結構體的關鍵字,它將一些相關聯的資料打包成乙個整體,這些相關聯的資料可以是不同的型別。它們被稱為結構體的成員,結構體的成員可以是標量 陣列 指標 或者是其他結構體。結構的宣告 假設我們要建立學生檔案,要納入學生的姓名,年齡和性別三個內容。那麼我們可以通過建立乙個結構體來實現這...