0
可能性の重複:
Why isn't sizeof for a struct equal to the sum of sizeof of each member?
構造体の内部と外部でchar変数のサイズが4から1に変わるのはなぜですか?
ここではコードである:ここ
#include <stdio.h>
struct small{
int a;
int b;
char c;
};
void main(){
printf("The size of int is: %d\n",(int)sizeof(int));
printf("The size of char is: %d\n",(int)sizeof(char));
printf("The size of small is: %d\n",(int)sizeof(struct small));
}
が出力される。
The size of int is: 4
The size of char is: 1
The size of small is: 12
私はsmallのサイズが9であることを期待していますが、それは12であることがわかります
あなたの期待は単に間違っています。構造体のサイズはメンバーのサイズの合計であると誰も言わなかった。 –
これは、配置制約のためです。それはここで何百回も尋ねられています。 – Coren
上記のコメントに追加するには、stddef.hの 'offsetof'マクロを調べてください。それは、構造内の特定のメンバのオフセット(バイト単位)を評価します – pmohandas