結構體與共用體

2022-01-29 02:05:51 字數 1264 閱讀 2901

c語言中的結構體有些類似物件,只是不能繼承例項化,只能用於表示儲存不同的資料型別。

例如頂乙個book的「物件」:

struct

book book;

其中book是結構體的標籤,book結構體的變數名,裡面的char title[50];是定義了乙個個的變數。

char title[50];表示對title變數強制生命50個字元的空間。

在 c 語言中,字串實際上是使用null字元 '\0' 終止的一維字元陣列,比如我要列印乙個hello,這一共是5個字元呢,

chargreeting="hello";//最後編譯器會自動增加乙個

如果是:

char greeting[5] ="hello";這是會有異常顯示

char greeting[4] = "hello";會提示長度太小。

訪問結構體的成員方法:使用.(點)來訪問,這個和物件使用屬性比較接近。

定義好結構體以後,宣告變數--->可以模擬,定義好類以後,例項化物件

struct

book book1;

struct book book2;

記憶體對齊:

對齊方式一般多分為4位元組對齊和8位元組對齊,具體是那種方式,以結構體中最大的位元組長度為準,如指標是8位元組,則以八字節為準,如果只有char, int則以int長度為準4位元組,如果乙個結構體裡面有三個全是char,那麼就是1位元組對齊。

32位系統中 long 是4個位元組;64位系統中long 是8個位元組

測試一下

book.c

#include struct

book book;

intmain ()

編譯執行:

gcc  book.c

./a.out

共用體:

共用體顧名思義,就是共用記憶體,可以在相同的位置儲存不同型別的變數。以定義乙個帶有多成員的共用體,但是任何時候只能有乙個成員帶有值。就像上廁所,可以不同的人去上,但是每次只能有乙個人。

共用體的大小有最大值決定。

測試一下:

#include union data

data;

intmain( )

結構體與共用體

1.定義乙個機構體的形式 struct 結構名 2.定義結構體變數 變數名表列 變數名表列 3.結構體成員的表示方法 結構變數名.成員名 例如 boy1.num 如果成員本身又是乙個結構則必須逐級找到最低階的成員才能使用。例如 boy1.birthday.month 4.結構體陣列 方法和結構變數相...

結構體與共用體

結構體的作用 在網路協議 通訊控制 嵌入式系統的c c 程式設計中,我們經常要傳送的不是簡單的位元組流 char型陣列 而是多種資料組合在一起的乙個整體。其表現形式是乙個結構體。簡單來說,結構體就是用來封裝資料的。結構體的定義 struct student struct student stu st...

結構體與共用體

結構體和共用體 聯合體 是自定義的資料型別,常用於處理非數值型資料,使用如 鍊錶 佇列 樹等。1.結構體定義 結構體是用其他型別構造出來的資料型別。結構體型別如下 struct student 定義乙個結構體變數如下 struct student stu1 stu1.age 32 stu1.name...