黑马程序员技术交流社区
标题:
关于结构内成员内存分配
[打印本页]
作者:
陨石
时间:
2014-9-3 00:13
标题:
关于结构内成员内存分配
struct student
{
int number;
char name[10];
unsigned int age;
}struct
复制代码
当我改变name的数组成员数量时,name会变更分配的内存大小,为什么?
作者:
陨石
时间:
2014-9-3 00:15
int main()
{
struct student *p;
p = &stu1;
//*((unsigned int*) ( (char*)p+16) )
printf("number=%d\nname=%d\nage=%d\n",sizeof(int),sizeof(char [10]),sizeof(unsigned int));
//(char*)或是(int*)或是(unsigned int *)是强制类型转换
printf("number=%d\nname=%s\nage=%d\n", *((int*)p), ((char*)p + 4), *((int *)p+4));
printf("number=%d\nname=%s\nage=%d\n", (*p).number,(*p).name,(*p).age);
printf("%x\n %x\n %x\n", p, p->name, &(p->age));
getchar();
return 0;
}
复制代码
作者:
陨石
时间:
2014-9-3 00:17
当我把number的数据类型,变为更大的double时name的变化又不一样了,为什么?
作者:
陨石
时间:
2014-9-3 00:22
就目前结果来看,以结构内最大的数据类型占用位数为标准,其它数据类型的成员要么彼此加起来的内存空间是最大占用位数,要么像数组这样的整除最大长度,余数补位或和其它小数据类型的成员凑齐那个最大占用位数。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2