【1】 常見數據類型的的sizeof函數得出的值表
| char | int | short | long | float | double | 指針 | |
| 32 bit | 1 | 4 | 2 | 4 | 4 | 8 | 4 |
| 64 bit | 1 | 4 or 8 | 2 | 8 | 4 | 8 | 8 |
【2】 數組求sizeof 的值
數組的大小 = 數組中元素的個數 x 該類型的大小
【3】 union 求 sizeof 的值
由于 union 中存在復寫現象,union 結構的 sizeof 的值即為 union 中最大的元素的大小。例如;
union student{
int id;
double score;
} 這個 union 中的最大的元素是double,所以它的 sizeof 就是8。
【4】 struct 中求 sizeof 的值
struct 沒有復寫的情況,但是它的 sizeof 情況比較復雜,因為存在補位的情況,例如下面的例子
struct stu{
char s;
int i;
}它的大小不是簡單的 1 + 4 = 5,而是8。因為 struct 的 size 一定是最大成員的整數倍,如果其中有元素不需要最大元素那么大的位置的話,就空著。所以上例的 struct 的大小為8。下一個例子
struct stu1{
char a;
char b;
int c;
}
struct stu2{
char a;
int c;
char b;
}雖然 stu1 和 stu2 的元素是一樣的,只是順序不一樣,但是因為補位的原因,第一個的 size 為8字節,而第二個的 size 為 12 字節。
【5】 類對象的 sizeof 大小
【5.1】 一個空類,里面任何函數也沒有,它的對象的 size 是多少?
大小為1。不是0的原因是當我們申明了一個對象的時候,系統就需要為其分配資源,所以一定不是0。
【5.2】 如果我們在空類中加入了構造函數和析構函數,size 是多少?
大小還是1,因為函數和對象是分離的。
【5.3】 如果是虛函數呢?
虛函數,每個類的對象中都會有一個指向虛函數的指針,所以大小要增加,在32位中,size為4個字節,在64位中為8個字節。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。