C语言知识问题:
为什么结构体嵌套后,它的长度都会增加3个字节??我说的嵌套就是指,一个结构体里包含另一个结构体。
例如:
#include <stdio.h>
struct Date
{
int year;
int month;
int day;
};
struct Student
{
char name[20];
char sex;
struct Date birthday;
};
int main(void)
{
struct Date dt;
struct Student stu;
printf("sizeof(dt) = %d\n", sizeof(dt));
printf("sizeof(stu) = %d\n", sizeof(stu));
return 0;
}
输出结果:
sizeof(dt) = 12
sizeof(stu) = 36
stu的长度应该是:20 + 1 + 3*4 = 33 个字节才对,为什么是36个呢?
我测试过很多次了,没有嵌套的结构体的长度没有错,就是包含的各变量之和。但是,一旦嵌套了其它结构体,它的长度就会多出3个字节。我还测试了,嵌套多个结构体的情况,以及结构体多重嵌套的情况,都是一样,会多出3个字节。
请问大家,这是为什么呢??为什么结构体嵌套后会多增加3个字节呢?这3个字节有什么用处呢?
为什么结构体嵌套后,它的长度都会增加3个字节??我说的嵌套就是指,一个结构体里包含另一个结构体。
例如:
#include <stdio.h>
struct Date
{
int year;
int month;
int day;
};
struct Student
{
char name[20];
char sex;
struct Date birthday;
};
int main(void)
{
struct Date dt;
struct Student stu;
printf("sizeof(dt) = %d\n", sizeof(dt));
printf("sizeof(stu) = %d\n", sizeof(stu));
return 0;
}
输出结果:
sizeof(dt) = 12
sizeof(stu) = 36
stu的长度应该是:20 + 1 + 3*4 = 33 个字节才对,为什么是36个呢?
我测试过很多次了,没有嵌套的结构体的长度没有错,就是包含的各变量之和。但是,一旦嵌套了其它结构体,它的长度就会多出3个字节。我还测试了,嵌套多个结构体的情况,以及结构体多重嵌套的情况,都是一样,会多出3个字节。
请问大家,这是为什么呢??为什么结构体嵌套后会多增加3个字节呢?这3个字节有什么用处呢?