結構體大小

2021-08-07 04:11:01 字數 373 閱讀 5763

下面結構體

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都是兩個位元組,unsigned int 後面c d 雖然佔了三個位,但是前面是int型,所以為四個位元組,聯合體總共就為四個位元組,下面的 struct s1 *next是四個位元組,總共加起來就是 1 + 4 + 4 + 4 = 13 但是為了保證結構體位元組數為4的倍數,所以最後為13 + 3 = 16位元組

結構體大小

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

結構體大小

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

結構體大小

struct date struct student 每個成員的偏移量都必須是當前成員所佔記憶體大小的整數倍,否則編譯器會在前乙個成員後面填充位元組,使得當前成員的偏移量是其記憶體大小的整數倍 陣列的位元組對齊值等於它的乙個元素的位元組對齊值 結構體的位元組對齊值等於它的所有成員的位元組對齊值中的最...