Intel和微软同时出现的C语言面试题 4)D~S4{E5
#pragma pack(8) xok
T
jY%.t)>)
struct s1{ 95~bM;TVr
short a; c`\/]
long b; 4]tg! ks
}; BXU0f%"8U
rf|Nu3AJ
struct s2{ \1joW#
char c; dWkQ NFKF
s1 d; G4:\6fu
long long e; '}(>s%~
}; \3^V-/SJf
cL*oO@I&_
#pragma pack() i"iy 0?
t !6sU]{
问 6>#8^{[
1.sizeof(s2) = ? "Hz%0zP&
2.s2的s1中的a后面空了几个字节接着是b? }"WovU{*s
= FV12(U
PVF:p7
W`vPf
如果您知道答案请在讨论中写出,以下是部份网友的答案,供参考: <";1[A%7<
TO5y.M|7
网友rwxybh(行云)的答案: }%?or_f/
内存布局是 AN:s%w2
1*** 11** >SvS(N{
1111 **** O>hh
1111 1111 '@+q_v@Jl
d9S?dx
所以答案就是24和3 ?'a>?al%>
H/M]YUs/3
下面是一个测试的程序,试一试就知道了,我用的是VC2005 k"gm;,`
"#gKI/[qxq
#pragma pack(8) xg,
9~f[
o:ow"cOEf
struct s1{ Q.eD:@%iE
short a; // 2 BYtes +{=U!}3|
long b; // 4 Bytes m?yztm~u
}; %pOxt<
struct s2{ ^
op0"
#B
char c; // 1 Byte &L?]w=*
s1 d; // 8 Bytes nM&