Intel和微软同时出现的C语言面试题 a3?D@@Qnw
#pragma pack(8) ~wl4
b0n " J`
struct s1{ %M
KZ':m
short a; Wd78 bu|
long b; !T3b]0z
}; 0'Y'K6hG`
^;[|,:8f7L
struct s2{ z3+7gp+I;
char c; XzV:q!e-
s1 d; nJ{vO{N
long long e; 1NI%J B
}; #eKg!]4-R
?r"QJa>
#pragma pack() Okt0b|=`1*
}_vUs jK
问 C!%\cy%Xj
1.sizeof(s2) = ? 20Rj
Rd
2.s2的s1中的a后面空了几个字节接着是b? r'5~4'o$
Jg:%|g
\n}@}E L
N~]
4,~
如果您知道答案请在讨论中写出,以下是部份网友的答案,供参考: R3,O;9i
dnXre*rhz
网友rwxybh(行云)的答案: wx2EMr
内存布局是 I C?bqC+
1*** 11** $-Wn|w+h<a
1111 **** (|kcSnF0
1111 1111 ~n<U8cm O
x;;
= +)Gg
所以答案就是24和3 dvLO #o{
KDQqN]rg
下面是一个测试的程序,试一试就知道了,我用的是VC2005 Yfotq9.=+
<[W41{
#pragma pack(8) -<MA\iSP
qY^@^)b[
struct s1{ C 7e
short a; // 2 BYtes |:jka
long b; // 4 Bytes ^}>Ie03m50
}; v0|[w2Q2
struct s2{ ecg>_%.>
char c; // 1 Byte k.MAX8
s1 d; // 8 Bytes B<}0r4T}
long long e; // 8 Bytes ,KO_h{mI<
}; +&j