現在打算把自己的掌握的一些東西以博客的形式展現出來,一、作爲自己的筆記,防止以後忘記有個博客可以方便自己查詢,二、分享出來,如果寫的正確可以給還不懂的人一些幫助,如果寫錯了,別人幫忙指出來,對自己也是一種提高。今天這篇博客打算寫一下關於C語言字節對齊的問題。
struct node1{
char a;
int b;
char c;
int d;
};
struct node2{
char a;
char c;
int b;
int d;
};
類型 | char | short | int | long | double |
所佔字節 | 1 | 2 | 4 | 4 | 8 |
(缺省)對齊值(byte) | 1 | 2 | 4 | 4 | 4 |
對於struct的對齊值,等於在其包含的類型中取最大的對齊值,如上面的struct node1的對齊值=4,應該其所包含的類型中對齊值最大的爲int,int的對齊值=4。
struct node1{
char a;
int b;
char c;
int d;
};
struct node2{
char a;
char c;
int b;
int d;
};
int main()
{
printf("%d,%d\n",sizeof(node1),sizeof(node2));
return 0;
}
用32bit編譯器,運行結果如下: