Intel和微软同时出现的C语言面试题 (Z-l/)Q
#pragma pack(8) 5/MED}9C(
OCnFEX"
struct s1{ 0E6lmz`O
short a; kH?#B%N5
long b; 9?EVQ
}; 7>n"}8i
J :S'uxM
struct s2{ <m-.aK{9
char c; Y"!uU.=xJ
s1 d; 7petHi
long long e; 4o5i ."l
}; }
`T8A
vM`~)rO@!
#pragma pack() )a cV-+{
[X/(D9J
问 Sj-[%D*
1.sizeof(s2) = ? IU!Ht>
2.s2的s1中的a后面空了几个字节接着是b? kus}WJ
vM4<d>
64U6C *w+
>85zQ
1aL
如果您知道答案请在讨论中写出,以下是部份网友的答案,供参考: ?QpNjsF
n &}s-`D
网友rwxybh(行云)的答案: s[AA7>]3
内存布局是 M{Gxjmdx
1*** 11** sLns3&n2
1111 **** OM:v`<T!z
1111 1111 3nFt1E
EJm4xkYLj1
所以答案就是24和3 )q3"t2-
v01#>,R
下面是一个测试的程序,试一试就知道了,我用的是VC2005 u7=T(4a
YaL]>.;Z:"
#pragma pack(8) $}tjS3klr
P`"mM?u
struct s1{ (V?@?25
short a; // 2 BYtes Do*n#=
long b; // 4 Bytes WRpyr
}; eVt1d2.O
struct s2{ ?CY1]d
char c; // 1 Byte x(~<