0
#include<stdio.h>
struct std
{
char c;
char e;
};
void main()
{
struct std p,q;
int start,last;
last= &q;
start= &p;
printf("Size:%u %u Address_Diff:%d \n",&p, &q,(last-start));
}
我正在學習結構對齊和填充,而我們執行上面的程序,每次顯示16個字節的兩個結構變量之間的時差。我不明白爲什麼差異是16字節,但我期待的差異是2個字節。爲什麼在64位操作系統中,結構變量之間的差異始終是16字節?
一些例子:
4077309424 4077309440 DIFF:16
3600238672 3600238688 DIFF:16
3272011008 3272011024 DIFF:16
由於填充結構的大小是16個字節(每個單字節填充了額外的7個字節)。 –
@EugeneSh。這裏顯示的結構幾乎都沒有填充任何形式的形狀,其大小爲2,至少在所有常見平臺上。 – nos