struct x
{
char b;
short s;
char bb;
};
int main()
{
printf("%d",sizeof(struct x));
}
输出为:6
我在32ä½ç¼–译器上è¿è¡Œæ¤ä»£ç 。输出应该是8个å—节。
我的解释-> 1. Char需è¦1个å—节,下一个shortå 用2çš„å€æ•°ï¼Œå› æ¤short创建填充1并å 用2个å—节,这里已ç»åˆ†é…了4个å—节。现在,唯一剩下的charæˆå‘˜å 用1个å—节,但是由于内å˜åˆ†é…是4çš„å€æ•°ï¼Œå› æ¤æ€»å†…å˜ä¸º8个å—节。
ç”案 0 :(得分:5)
结构的对é½è¦æ±‚是具有最大对é½æ–¹å¼çš„æˆå‘˜çš„对é½è¦æ±‚。这里的最大对é½æ–¹å¼é€‚用于dict.get()
ï¼Œå› æ¤å¯èƒ½æ˜¯short
ã€‚å› æ¤ï¼Œä¸¤ä¸ª2
,两个b
和两个s
得出6。
ç”案 1 :(得分:0)
C struct内å˜å¸ƒå±€å®Œå…¨æ˜¯ç‰¹å®šäºŽå®žçŽ°çš„,您ä¸èƒ½å‡è®¾æ‰€æœ‰è¿™äº›ã€‚
æ¤å¤–,在C的典型对é½æ–¹å¼ä¸ï¼Œç»“构如下:
NODE.JS
çš„sizeof = 6ï¼Œå› ä¸ºå¦‚æžœç±»åž‹â€œ shortâ€å˜å‚¨åœ¨ä¸¤ä¸ªå—节的内å˜ä¸ï¼Œåˆ™ä¸Šè¿°æ•°æ®ç»“æž„çš„æ¯ä¸ªæˆå‘˜å°†å¯¹é½2个å—节。 Data1çš„å移é‡ä¸º0,Data2çš„å移é‡ä¸º2,Data3çš„å移é‡ä¸º4。æ¤ç»“构的大å°ä¸º6个å—节。
请å‚è§https://en.wikipedia.org/wiki/Data_structure_alignment