struct
A{
long
a1;
short
a2;
int
a3;
int
* a4;
};
8 + 2 + 4 + 8 = 22, 对齐为8的倍数:24
多看看就背住了:
32位编译器:32位系统下指针占用4字节
char
:1个字节
char
*(即
指针变量
): 4个字节(32位的寻
址空间是2^32, 即32个bit
,也就是4个字节。同理64位编译器)
short
int
: 2个字节
int
: 4个字节
unsigned
int
: 4个字节
float
: 4个字节
double
: 8个字节
long
: 4个字节
long
long
: 8个字节
unsigned
long
: 4个字节
64位编译器:64位系统下指针占用8字节
char
:1个字节
char
*(即指针变量): 8个字节
short
int
: 2个字节
int
: 4个字节
unsigned
int
: 4个字节
float
: 4个字节
double
: 8个字节
long
: 8个字节
long
long
: 8个字节
unsign
ed
long
: 8个字
节
记住long long 及 指针变量 不同