我有以下代码:
#include<stdio.h>
typedef struct _node_1
{
int number;
int scores;
int xyz;
double p;
} Node_1;
typedef struct _node_2
{
int number;
int scores;
int xyz;
struct _node_2 *p;
} Node_2;
typedef struct _node_3
{
int number;
int scores;
int xyz;
struct _node_2 p;
} Node_3;
int main()
{
printf("%d\n",sizeof(Node_1));
printf("%d\n",sizeof(Node_2));
printf("%d",sizeof(Node_3));
return 0;
}
,输出为:
24
24
40
我的问题是为什么这3个例子的输出结果是这样的,我们如何确切地确定结构的大小?顺便说一下,我的操作系统是64位。谢谢!
答案 0 :(得分:2)
第一个&amp;第二个,你会期望4 + 4 + 4 + 8 = 20,因为内部数据的大小,但你忘了对齐。
64位指针&amp;双精度(64位)也需要与8字节边界对齐。编译器为此插入一个4字节的填充。