三、示例
#include<stdio.h>
struct test
{
char x1;
float x3;
short x2;
char x4;
};
struct test2
{
char x1;
double x2;
short x3;
char x4;
short x5;
struct test t;
};
void main(void)
{
struct test t;
struct test2 t2;
int len;
int len2;
len=sizeof(t);
len2=sizeof(t2);
setvbuf(stdout,NULL,_IONBF,0);
printf("len: %d, len2: %d .", len, len2);
}
图1 test结构体内存示意图
char x1 占一个字节,位置如图中1。
Float x3 占四个字节,因此需要从4的整数倍开始,故char x1后面补三位,x3存在5-8字节处。
Short x2 占两个字节,8是2的整数倍,因此x2放在9-10字节处。
Char x4 占一个字节,因此放在11处。
整个结构体中,最长的是float ,占四个字节,因此使用sizeof()函数时,长度是4的整数倍,故char x4后面补一位,即图中12位置处。
Sizeof(test) 的返回值为12。
|