C语言,结构体字节大小输出问题
#pragma pack(4)
#include "stdio.h"
struct date
{
int year;
int month;
int day;
}today;
int main(void)
{
printf("%d\n",sizeof(struct date));
return 0;
}
为什么这里输出会输出12呢,有点不太懂,可以帮我一下啊
你这这是最简单的,你上面的#pragma pack(4)设置默认对齐数为4,如果是一个char int char,大小是多少呢,也是12.
将数据字节数与默认对齐数做比较取大的作为字节数,在内存中的存储必须在z默认对齐数的整数倍上,char是1 下一个int要存在4的位置上,自身用4,用了8字节,要存在4的倍数位置上,最后一个char只能存12,所以为12,建议好好看些文章