C/C++中基本數據類型所占內存大小


C/C++中基本數據類型所占內存大小

 C++中不同數據類型所占的字節大小,在不同的操作系統和編譯器下,是不同的,一般主要說gcc下,32位或64位系統的,做了個表如下: 

數據類型

32位

64位

取值范圍(32位)

char

1

1

-128~127

unsigned char(當byte使用) 

1

1

0~255

short int /short 

2

2

–32,768~32,767

unsigned  short  

2

2

0~65,535

int

4

4

-2,147,483,648~2,147,483,647

unsigned int

4

4

0~4,294,967,295

long int /long

4

4

–2,147,483,648~2,147,483,647

unsigned long

4

4

0~4,294,967,295

long long int/long long

8

8

-9,223,372,036,854,775,808

~9,223,372,036,854,775,807

指針 

4

8

 

float  

4

4

3.4E +/- 38 (7 digits)

double

8

8

1.7E +/- 308 (15 digits)

long double

12

16

 

 

  

注意:    

    1. 求數組大小時,如果數組作為參數傳遞時,退化為指針,所以sizeof(arr)大小為該系統下指針的大小

    2. 對於C字符串,需要牢記C/C++中一個漢字占兩個字節(Linux下3個字節)。

    3. 求struct 或者 class 的大小時候,除了基本的數據類型大小,特別要考慮的是字節對齊問題,如果是C++的還涉及虛函數的虛表問題,需要加上虛表指針的大小,關於內存對齊的問題在別的博客會詳細寫。

轉載自:https://blog.csdn.net/zcyzsy/article/details/77935651


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM