在C語言中,結構和聯合都是使用者定義的資料型別,在概念上是相同的,但是它們在某些方面還是不同的,比如記憶體分配給成員的方式。它們的宣告類似,但功能不同。它們允許使用者在一個名稱下組合不同的資料型別。當宣告結構變數時,每個成員使用單獨的記憶體位置,而union變數的不同成員共享相同的記憶體位置。讓我們研究一下結構和結合的區別是細節。
結構只是C中另一種使用者定義的資料型別,它允許使用者將不同型別的資料型別組合成一個記憶體塊中的單一型別。一個結構可以包含相互關聯的簡單資料型別和複雜資料型別,否則就沒有意義了。結構中的每個成員都有自己的記憶體位置,因此可以隨時訪問和檢索它。
當大量資料需要分組時,可以使用一種結構,比如一個目錄儲存一本書中許多成員的資訊,或者一個地址簿儲存一個聯絡人的所有資訊——姓名、地址、聯絡電話等等。每個成員的地址將按升序排列,這意味著每個成員的記憶體將從不同的偏移值開始。更改一個成員的值不會對其他成員產生任何影響。
“struct”關鍵字用於在單個名稱下定義不同資料型別的結構。例如,如果要建立員工資料庫,則需要在單個實體下儲存員工的姓名、年齡、電話和薪資詳細資訊。這是透過關鍵字'struct'完成的,然後它告訴編譯器已經宣告瞭一個結構。
結構員工{
字串名稱;
串齡;
字串電話;
字串工資;
}emp1,emp2;
這裡,“employee”是結構的名稱,建立了兩個型別為“employee”的變數“emp1”和“emp2”。右大括號後面必須跟一個分號(;)。
結構的成員可由兩種型別的運算子訪問:
它是C語言中使用的一種特殊資料型別,允許使用者在同一記憶體位置儲存不同型別的資料。聯合與結構非常相似,可以透過將關鍵字“struct”替換為關鍵字“union”來定義它。成員在一個聯合體中相互重疊,其大小足以容納所有成員。
當一個變數與union關聯時,編譯器透過考慮最大記憶體的大小來分配記憶體,因此union的大小等於最大資料成員的大小。可以用許多成員定義聯合,但在任何給定的時間例項中,只有一個成員包含值。
聯合的所有成員的地址都是相同的,這意味著每個成員都從相同的偏移量值開始。改變一個成員的值會影響其他成員的值。當您希望儲存屬於多種資料型別之一的內容時,可以使用聯合。
工會僱員{
字元名[32];
智力;
浮動工資;
};
這裡關鍵字'union'定義了與結構宣告非常相似的union。變數可以儲存一個字串值,即“僱員的姓名”,一個整數值,即“僱員的年齡”,或者一個浮點數,表示“僱員的工資”。
1.關鍵詞
關鍵字“struct”用於定義結構,而“union”關鍵字用於定義聯合。
2.記憶體分配
為結構中的成員分配單獨的記憶體空間,並且成員具有不共享記憶體的不同地址。另一方面,聯合為其所有成員共享相同的記憶體空間,因此分配共享記憶體位置。
3.會員接入
聯合一次為其所有成員儲存一個值,使得一次只能訪問一個成員。而多個值可以儲存在一個結構中,因此可以隨時訪問和檢索任何成員值。
4.尺寸
結構的大小等於所有構件或多個構件的大小之和,而聯合體的大小等於最大構件的大小。
5.初始化
在一個結構中,可以一次初始化多個成員,而在聯閤中,只能用其型別的值初始化第一個成員。
5.價值
一個結構可以儲存所有成員的不同值,並且一個成員的值的更改不會對其他成員的值產生任何影響。一個聯合為它的所有成員儲存相同的值,一個成員的值的變化會影響另一個成員的值。
結構 | 工會 |
Struct關鍵字用於定義結構。 | Union關鍵字用於定義聯合。 |
成員在結構中不共享記憶體。 | 成員共享聯閤中的記憶體空間。 |
可以在結構中隨時檢索任何成員。 | 在聯閤中一次只能訪問一個成員。 |
一個結構的幾個成員可以同時初始化。 | 只能初始化第一個成員。 |
結構的尺寸等於每個構件的尺寸之和。 | 工會的規模等於最大成員的規模。 |
改變一個成員的值不會影響另一個成員的值。 | 一個成員值的更改將影響其他成員值。 |
為所有成員儲存不同的值。 | 為所有成員儲存相同的值。 |
...與功能基因組學的表格形式 6. 摘要 什麼是結構基因組學(structural genomics)? 結構基因組學是研究基因組的物理性質。因此,結構基因組學主要研究基因組的測序和作圖。一個有機體中基因組的完整序列或蛋白質的全套是由結構基...
...尖晶石結構的表格形式 5. 摘要 什麼是尖晶石結構(spinel structure)? 尖晶石是任何種類的礦物,一般化學式為AB2X4。這些結構通常是立方晶體系統。在上面的通式中,“X”是一個陰離子(通常,這個陰離子是一個硫族元素,如氧和...
...與殘留結構的表格形式 6. 摘要 什麼是同源結構(homologous structures)? 同源結構是存在於不同生物體中的相似的解剖結構。分析這些同源結構的進化可以發現這些生物有著共同的祖先。因此,它們是進化上相關的有機體。例如,鳥...
...單元胞中有四個不對稱單元。 什麼是金剛石結構(diamond structure)? 金剛石是碳的同素異形體。它是一種固體形式的碳,具有三維形狀。此外,每個碳原子透過共價化學鍵與另外四個碳原子相連。這種晶體結構被稱為“金剛石立方...
...資料冗餘以實現資料一致性。sqlserver就是這樣一種DBMS。結構化查詢語言(SQL)是資料庫管理系統中管理資料的語言。Union和Union all是SQL中的兩個命令,它們有助於在表資料中執行set操作。 目錄 1. 概述和主要區別 2. SQL Server中的...
...較-表格形式的C中的結構與並集 6. 摘要 什麼是c中的結構(structure in c)? 結構是C語言中使用者定義的資料型別,它有助於組合不同型別的資料項。結構可以表示記錄。學生可以有student_id、student_name等,而不是分別儲存每個變數,...
...的同源結構與相似結構 5. 摘要 什麼是同源結構(homologous structures)? 同源結構是指不同動物的**或其他結構,它們來自同一祖先。這些結構在解剖學上是相似的,但它們可能執行不同的功能。同源結構是在相關生物中發展起來的...
結構化的(structured)和非結構化程式設計(unstructured programming)的區別 計算機程式是計算機執行用程式語言編寫的任務的一組指令。程式設計範例可以根據語言特性對程式語言進行分類。結構化程式設計和非結構化程式設計是兩...
高的(tall)和扁平結構(flat structure)的區別 高層結構與扁平結構的關鍵區別在於,高層結構是一種具有多個層次結構的組織結構,而扁平結構則是具有有限數量層次的組織結構。組織結構的選擇要慎重,以保證決策的有效性和及...
結構(structure)和基礎設施(infrastructure)的區別 儘管結構和基礎設施這兩個詞似乎是相關的,但結構和基礎設施之間有著明顯的區別。結構是指在一個特定的系統中由幾個部分組成的東西;它也可以指這些組成部分排列在一起的...