Intel和微软同时出现的C语言面试题 KC#kss
#pragma pack(8) <e$5~Spc
;,()wH
struct s1{ 5XhK#X%:A
short a; i#Ne'q;T
long b; ll 6]W~[ZC
}; EaJDz`T}
~r{\WZ.
struct s2{ G* 8+h
char c; C+ZQB)gn
s1 d; 'nC3:U
long long e; wE-Ji<1HJ
}; TB;3`
qr7 X-[&
#pragma pack() hw EZj`9
(R9QBZP5
问 f%`*ba"v
1.sizeof(s2) = ? 5B8V$ X
2.s2的s1中的a后面空了几个字节接着是b? TW'E99wG
e4[-rkn{hl
{d&X/tT
)er?*^9Z
如果您知道答案请在讨论中写出,以下是部份网友的答案,供参考: nNd`]F^U
j;$6F/g
网友rwxybh(行云)的答案: +9Xu"OFm
内存布局是 ey'pm\Z
1*** 11** a3b2nAI l
1111 **** /&S~+~]n
1111 1111 a!TBk=P
} IIK~d,
所以答案就是24和3 ,eZ;8W{G
muK'h`
下面是一个测试的程序,试一试就知道了,我用的是VC2005 Ec7{BhH)
YlZYS'_
#pragma pack(8) !:]s M-cCt
>!:$@!6L
struct s1{ 0BbiQXU
short a; // 2 BYtes !$%/
rQ9
long b; // 4 Bytes [q0_7
}; >C*?17\
struct s2{ _"R3N
char c; // 1 Byte )x_W&