Intel和微软同时出现的C语言面试题 VH.mH<
#pragma pack(8) laRcEXj
:bh#,]'
struct s1{ J**-q(>
short a; FeW}tKH
long b; @%(Vi!Cv"R
}; SdOa#U)
)\
`AD#
struct s2{ zTgY=fuz
char c; j20/Q)=h
s1 d; KASuSg+
long long e; +-DF3(
}; skd3E4
Q[j'FtP%
#pragma pack() e-!6m#0
scf.>K2
问 (E{>L).~
1.sizeof(s2) = ? q*L>MV
2.s2的s1中的a后面空了几个字节接着是b? (Dy6I;S
"!V-@F$@N
}V:B,:
''bh{
.x
如果您知道答案请在讨论中写出,以下是部份网友的答案,供参考: F9ys.Bc
Frn<~
网友rwxybh(行云)的答案: z\d{A7
内存布局是 ^tMb"WO
1*** 11** \dm5Em/
1111 **** _d|CO
1111 1111 B0h|Y.S8%1
R[C+?qux
所以答案就是24和3 Kyf,<zF
?z
hw0
下面是一个测试的程序,试一试就知道了,我用的是VC2005 9HsiAi*
q,i&%
#pragma pack(8) *^ZJ&.
J!{t/_aw
struct s1{ B(pxyv)
short a; // 2 BYtes f`$F^=
long b; // 4 Bytes ,4Q1[K35B
}; 3WVH8S b
struct s2{ Fy;
sVB
char c; // 1 Byte fH@P&SX