64,682
社区成员
发帖
与我相关
我的任务
分享
#include <windows.h>
#include <stdio.h>
int main()
{
BITMAPFILEHEADER bmfh;
int a = sizeof (BITMAPFILEHEADER);
int b = sizeof (bmfh.bfSize);
printf ("%d\n", a);
printf ("%d\n", b);
return 0;
}
规则就是每个元素自身对齐+结构体整体对齐,具体请看http://wenku.baidu.com/view/fef2b769a45177232f60a2df.html
struct foo
{
char c1; //0
//1
short s;//2 3
char c2;//4
//5 6 7
int i; //8 9 10 11
//整体长度0..11=12,为min{sizeof(int),4}的整数倍,所以结构体已经对齐
}
#include<stdio.h>
#include<stdlib.h>
struct foo
{
char c1;
short s;
char c2;
int i;
};
int main()
{
struct foo bb;
printf("%p\n",&bb.c1);
printf("%p\n",&bb.s);
printf("%p\n",&bb.c2);
printf("%p\n",&bb.i);
printf("%d\n",sizeof(foo));
return 0;
}