马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<stdio.h>
#define M int main()
M
{
typedef struct weapon{int atk;
char name[10];
int price;
}weapon_1;
weapon_1 a,b,c, *head ,*p;
a.atk=10;
a.name[10]="name";
a.price =10;
b.atk=20;
b.name[10]="name1";
b.price =20;
c.atk=30;
c.name[10]="name3";
c.price =30;
printf("%d",sizeof(a));
return 0 ;
}
第一元素的偏移量为0,第二个元素为数组,占10个字节,10不能被4整除,填充字节,所以第二个元素的偏移量为10,第三个元素的偏移量为第二个元素的偏移量加上第二个元素所占内存大小,所以第三个元素的偏移量为20,然后20再加上4就是这个结构体类型所占的内存空间大小,我这样的算法是对的嘛?为什么在程序上面显示的是20? |