求解sizeof的值

2021-06-08 21:14:53 字數 356 閱讀 3904

以下三條規則**

1:資料成員對齊規則:結構(struct)(或聯合(union))的資料成員,第乙個資料成員放在offset為0的地方,以後每個資料成員儲存的起始位置要從該成員大小或者成員的子成員大小(只要該成員有子成員,比如說是陣列,結構體等)的整數倍開始(比如int在32位機為4位元組,則要從4的整數倍位址開始儲存。

2:結構體作為成員:如果乙個結構裡有某些結構體成員,則結構體成員要從其內部最大元素大小的整數倍位址開始儲存.(struct a裡存有struct b,b裡有char,int ,double等元素,那b應該從8的整數倍開始儲存.)

3:收尾工作:結構體的總大小,也就是sizeof的結果,.必須是其內部最大成員的整數倍.不足的要補齊.

sizeof 的結果值

以前一直以為sizeof 就是求乙個陣列的長度,例如乙個陣列a 5 sizeof a 5 現在才發現大錯特錯。實踐出真理,還是直接輸出來的直觀。include include includeusing namespace std struct num struct num1 struct num2 ...

sizeof 聯合 值的理解

sizeof 聯合 值的理解 先來看各種型別在記憶體中所占用的空間大小 include int main void 執行結果 單位是位元組 int sizeof 4 char sizeof 1 float sizeof 4 double sizeof 8 再寫乙個聯合的例子,並列印出最終值 incl...

sizeof的返回值

最近在看webkit,在wtf wtf ownptrcommon.h有一段關於sizeof的 template inline void deleteownedptr t ptr 既然webkit這麼寫,那麼肯定合理了,於是查閱資料總結一下,sizeof的返回值 1.正值 常見,2.零值 確實存在0,...