刚做完笔试题,碰到一个这样的题,查了资料巩固一下
c语言在结构体定义内存计算中,涉及到字节对齐的概念,这与结构体成员中占内存最多的数据类型所占的字节数为标准有关,所有的成员在分配内存时都要与这个长度对齐。除此之外,还有结构体各成员顺序有关。下面举几个例子:
int main()
{
node xx;
printf("%ld",sizeof(xx));
}
- 32
typedef struct ll{
int n;
char b[5];
double l;
short a;
}node;
- 24
typedef struct ll{
int n;
char b[3];
double l;
short a;
}node;
- 24
typedef struct ll{
int n;
char b[5];
short a;
double l;
}node;
- 20
typedef struct ll{
int n;
char b[5];
int l;
short a;
}node;