Intel和微软同时出现的C语言面试题 M$#zvcp
#pragma pack(8) STu!v5XY}-
6gwjrGje\
struct s1{ {55{YDqx
short a; )c5M;/s
long b; 6XUcJ0
}; $s.:wc^
v=nq P{
struct s2{ cv;&ff2%?
char c; W3*BdpTw
s1 d; @B5@3zYs
long long e; Yo;/7gG>
}; OQaM4 7"
Z_F:H@-&
#pragma pack() .:Bjs*
wl2rw93
问 6~?7CK
1.sizeof(s2) = ? a#FkoA~M
2.s2的s1中的a后面空了几个字节接着是b? CyO2Z
rklr^ e
3;~1rw=$<
o%X_V!B{V
如果您知道答案请在讨论中写出,以下是部份网友的答案,供参考: 4IG=mG)
>x@]wsj
网友rwxybh(行云)的答案: W%b<(T;
内存布局是 %1SA!1>j
1*** 11** aq~hl7MTj
1111 **** 8#'<SB
1111 1111 hXM8`iFW5
-h^FSW($-R
所以答案就是24和3 )v;>6(
('Wo#3b$
下面是一个测试的程序,试一试就知道了,我用的是VC2005 w_pEup\`
4>>{}c!nf
#pragma pack(8) F6h3M~uR
K+Q81<X~
struct s1{ %]nYv#K
short a; // 2 BYtes D|Wekhm
long b; // 4 Bytes ,0NVb7F;k
}; rZ 9bz}K
struct s2{ 2\l7=9 ]\3
char c; // 1 Byte pl
Ii
s1 d; // 8 Bytes [VIdw92
long long e; // 8 Bytes <