struct
st
{
int
* p;
int
i;
char
a;
};
int
sz=
sizeof
(
struct
st);
|
如下C程序,在64位处理器上运行后sz的值是什么?
32,64位编译环境下的sizeof问题经常出现。
不过,两者环境下的数据类型所占字节数都是一样的,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
char
:1字节;
short
:2字节;
int
:4字节;
long
:4字节;
long
long
:8字节;
float
:4字节;
double
:8字节;
long
double
:8字节;
|
唯一不同的是:指针类型
32位:指针类型占4个字节
64位:指针类型占8个字节
所以,本题中,st占 8 +8=16字节。其中,为了字节对齐,int 和char 需要补齐到8个字节