三、示例
- #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。
|