結構體大小

2021-08-21 07:19:04 字數 563 閱讀 5295

struct date;

struct student;

每個成員的偏移量都必須是當前成員所佔記憶體大小的整數倍,否則編譯器會在前乙個成員後面填充位元組,使得當前成員的偏移量是其記憶體大小的整數倍

陣列的位元組對齊值等於它的乙個元素的位元組對齊值

結構體的位元組對齊值等於它的所有成員的位元組對齊值中的最大值

當所有成員大小計算完畢後,編譯器判斷當前結構體大小是否是結構體中最寬的成員變數大小的整數倍,如果不是會在最後乙個成員後做位元組填充

注意:由 2 可得,char name[10] 的位元組對齊值為 sizeof char,即為 1

struct date;
所以,結構體 date 的大小為 12

struct student;
所以,結構體 student 的大小為 36

結構體大小

含有基本型別的結構體的大小所對應的最終決定因素是結構體內自身成員的分布。成員不同的分布將導致含有相同成員結構體大小的不同,每個成員的對齊都是以緊接著後面的乙個為參考的,如果緊接著的大於對應指定,就以緊接著的為對齊因子,否則將聯絡周圍的具體情況進行對齊,而且對齊因子只有三種型別 1,2,4。對於最後一...

結構體大小

結構體中的成員可以是不同的資料型別,成員按照定義時的順序依次儲存在連續的記憶體空間。和陣列不一樣的是,結構體的大小不是所有成員大小簡單的相加,需要考慮到系統在儲存結構體變數時的位址對齊問題。看下面這樣的乙個結構體 struct stu1 先介紹乙個相關的概念 偏移量。偏移量指的是結構體變數中成員的位...

結構體大小

下面結構體 struct s1 char ch,ptr union short a,b unsigned int c 2,d 1 struct s1 next sizeof struct s1 是 16位元組 這個呢,char ch乙個位元組,char ptr四個位元組,共用體裡面short a,b...