C/C++中基本数据类型所占内存大小 | 您所在的位置:网站首页 › 基本数据类型大小 › 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 |
CopyRight 2018-2019 实验室设备网 版权所有 |