【1】 常見數(shù)據(jù)類型的的sizeof函數(shù)得出的值表
成都創(chuàng)新互聯(lián)是一家專業(yè)提供上黨企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站制作、網(wǎng)站建設(shè)、H5開發(fā)、小程序制作等業(yè)務(wù)。10年已為上黨眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站制作公司優(yōu)惠進行中。
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】 數(shù)組求sizeof 的值
數(shù)組的大小 = 數(shù)組中元素的個數(shù) x 該類型的大小
【3】 union 求 sizeof 的值
由于 union 中存在復(fù)寫現(xiàn)象,union 結(jié)構(gòu)的 sizeof 的值即為 union 中最大的元素的大小。例如;
union student{ int id; double score; }
這個 union 中的最大的元素是double,所以它的 sizeof 就是8。
【4】 struct 中求 sizeof 的值
struct 沒有復(fù)寫的情況,但是它的 sizeof 情況比較復(fù)雜,因為存在補位的情況,例如下面的例子
struct stu{ char s; int i; }
它的大小不是簡單的 1 + 4 = 5,而是8。因為 struct 的 size 一定是最大成員的整數(shù)倍,如果其中有元素不需要最大元素那么大的位置的話,就空著。所以上例的 struct 的大小為8。下一個例子
struct stu1{ char a; char b; int c; } struct stu2{ char a; int c; char b; }
雖然 stu1 和 stu2 的元素是一樣的,只是順序不一樣,但是因為補位的原因,第一個的 size 為8字節(jié),而第二個的 size 為 12 字節(jié)。
【5】 類對象的 sizeof 大小
【5.1】 一個空類,里面任何函數(shù)也沒有,它的對象的 size 是多少?
大小為1。不是0的原因是當(dāng)我們申明了一個對象的時候,系統(tǒng)就需要為其分配資源,所以一定不是0。
【5.2】 如果我們在空類中加入了構(gòu)造函數(shù)和析構(gòu)函數(shù),size 是多少?
大小還是1,因為函數(shù)和對象是分離的。
【5.3】 如果是虛函數(shù)呢?
虛函數(shù),每個類的對象中都會有一個指向虛函數(shù)的指針,所以大小要增加,在32位中,size為4個字節(jié),在64位中為8個字節(jié)。