《C语言》结构体大小的计算(内存详解)
CPU的数据传输方式是一次传输4个(32位)或者8个(64位)字节的方式进行传输(根据总线条数来确定)。
一、对于64系统来说。
有结构体A如下:
struct A
{
char x;
int y;
double z;
};
那么结构体A的储存方式为:
x | y | y | y | y | |||
---|---|---|---|---|---|---|---|
z | z | z | z | z | z | z | z |
有结构体B如下:
struct B
{
char x;
double y;
int z;
};
那么结构体B的储存方式为:
x | |||||||
---|---|---|---|---|---|---|---|
y | y | y | y | y | y | y | y |
z | z | z | z |
有结构体C如下:
struct C
{
int x;
char y;
double z;
};
那么结构体C的储存方式为:
x | x | x | x | y | |||
---|---|---|---|---|---|---|---|
z | z | z | z | z | z | z | z |
有结构体D如下:
struct D
{
int x;
char Y;
double Z;
};
那么结构体D的储存方式为:
x | x | x | x | y | |||
---|---|---|---|---|---|---|---|
z | z | z | z | z | z | z | z |
有结构体E如下:
struct E
{
double x;
char y;
int z;
};
那么结构体E的储存方式为:
x | x | x | x | x | x | x | x |
---|---|---|---|---|---|---|---|
y | z | z | z | z |
有结构体F如下:
struct F
{
double x;
int y;
char z;
};
那么结构体F的储存方式为:
x | x | x | x | x | x | x | x |
---|---|---|---|---|---|---|---|
y | y | y | y | z |