用合適的 C 語言示例說明結構體和聯合體的區別
以下是 C 語言中結構體和聯合體的區別:
序號 | 結構體 | 聯合體 |
---|---|---|
1 | 定義 結構體是將不同資料項組合在一起,並使用一個名稱進行分組的異構資料集合。 | 定義 聯合體是一個記憶體位置,由多個不同資料型別的變數共享。 |
2 | 語法:struct tagname{ datatype member1; datatype member2; ---- ---- ---- }; | 語法:union tagname{ datatype member1; datatype member2; ---- ---- ---- }; |
3 | 例如:struct sample{ int a; float b; char c; }; | 例如:union sample{ int a; float b; char c; }; |
4 | **關鍵字** - struct | **關鍵字** - union |
5 | 記憶體分配 | 記憶體分配 |
6 | ![]() | ![]() |
7 | 分配的記憶體是結構體中所有資料型別大小的總和(此處為 7 位元組) | 分配的記憶體是聯合體中所有資料型別中最大的大小(此處為 4 位元組) |
8 | 為結構體的所有成員分別分配記憶體 | 在任何特定時刻,只有一個成員駐留在記憶體中 |
示例
以下是結構體的 C 程式:
#include<stdio.h> struct size{ double a; int b; char c; float d; }; int main(){ printf("%ld",sizeof( stuct size)); }
輸出
執行上述程式時,會產生以下結果:
24
示例
以下是聯合體的 C 程式:
#include<stdio.h> union size{ double a; int b; char c; float d; } Int main(){ Printf("ld",sizeof(union size)); }
輸出
執行上述程式時,會產生以下結果:
8
廣告