基本数据类型所占字节大小:
32位编译器(指针4字节)
char :1个字节
short int :4 字节
int: 4个字节
long: 4个字节
double: 8个字节long long: 8个字节
64位编译器(指针8字节)
char :1个字节
short int : 2个字节
int: 4个字节
double: 8个字节
long: 8个字节(32位和64位变得就是long,其他的均没有变化啊)
long long: 8个字节
- 定义:简单的说其作用就是返回一个对象或者类型所占的内存字节数。
- 用法:sizeof(对象/类型).对于基本数据类型和指针,sizeof返回的是所占字节数。
- 对于结构体的sizeof操作符,满足:
- 1) 结构体变量的首地址能够被其最宽基本类型成员的大小所整除;
2) 结构体每个成员相对于结构体首地址的偏移量(offset)都是成员大小的整数倍,
如有需要编译器会在成员之间加上填充字节(internal adding);
3)结构体的总大小为结构体最宽基本类型成员大小的整数倍,如有需要编译器会在最
末一个成员之后加上填充字节(trailing padding)。 - #pragma pack(push) // 将当前pack设置压栈保存
#pragma pack(2)// 必须在结构体定义之前使用
struct S1
{
char c;
int i;
};//sizeof(S1) = 6
struct S3
{
char c1;
S1 s;
char c2
};sizeof(S3) = 10
#pragma pack(pop) // 恢复先前的pack设置