資料型別占用空間

2021-05-25 00:16:03 字數 513 閱讀 5503

請看下面的例子:

struct test

int num;

char*pc;

short sdtate;

char ch[2];

short s[4];

}*p;

那麼這個結構體的大小多少呢?他與共同體的區別很明顯,共同體所有成員變數都共用同一塊記憶體,而結構體每個元素都占用相應地記憶體。

共同體的最大的成員所佔記憶體為共同體占用記憶體。

int 佔4個位元組(32系統):或許有的不太明白,其實很簡單的,乙個位元組佔8位是定的,作業系統是32位,很顯然,就是4個位元組了。

如果是陣列指標即指向陣列的指標,指標指向的是陣列的位址,占用4個位元組。

short sdtate:2個

char ch[2]:2個

short s[4]:2*4=8 short型陣列

所以一起:4+4+2+2+8=20位元組。這好似剛好出現的情況。

在vc++編譯器中用sizeof()檢視很方便的。

補充說明:

Delphi 資料型別及位元組占用

分類 範圍位元組 備註簡單型別 序數整數 byte 0 255 1無符號8位 shortint 128 127 1有符號8位 word 0 65535 2無符號16位 smallint 32768 32767 2有符號16位 cardinal 0 4294967295 4無符號32位 longwor...

資料型別佔空間數

關於這個基本的問題,很早以前就很清楚了,c標準中並沒有具體給出規定那個基本型別應該是多少位元組數,而且這個也與機器 os 編譯器有關,比如同樣是在32bits的作業系統系,vc 的編譯器下int型別為佔4個位元組 而tuborc下則是2個位元組。所以int,long int,short int的寬度...

Java 基本資料型別記憶體占用

型別 儲存需求 bit數 取值範圍 byte 1位元組1 8 27 27 1 short 2位元組2 8 215 215 1 int4位元組 4 8 231 231 1 long 8位元組8 8 263 263 1 這裡解釋下為什麼8位是27次方,這是因為首位需要預留出來表示正負號。那為什麼正數又需...