结构体成员地址分配问题
关于结构体中不同类型成员地址分配问题下面做了一个测试,测试环境(Visual Studio 2010 C++)
程序如下:(可下载附件)
structspace.rar
(825 Bytes)
#include<stdio.h>
#include<conio.h>
struct s_data
{
char c;
int i;
float f;
double d;
}t={'a',3,-7.5,2}; //定义了一个含有不同类型数据的结构体,并附初值
void main()
{
char*p; //定义了一个指向结构体成员t.c的字符指针
int j;
p=&t.c;
for(j=0;j<24;j++) //查看&t.c地址后连续24个字节中的数据
{
printf("%p %d\n",p,*p);
p++;
}
printf("结构体t中成员: 字符c的地址是: %p 值为:%d\n",&t.c,t.c);
printf("结构体t中成员: 整型i的地址是: %p 值为:%d\n",&t.i,t.i);
printf("结构体t中成员: 单精度浮点型f的地址是: %p 值为:%f\n",&t.f,t.f);
printf("结构体t中成员: 双精度浮点型d的地址是: %p 值为:%lf\n",&t.d,t.d);
}
结果如下:有两个问题,一个是结构体中我定义的char c和int i 为什么都分配了4个字节的空间,不应该是char类型是1个字节,int型是2个字节么?
在一个就是结构体sturct中定义的成员所占空间应该是连续的,为什么中间空出四个字节?