《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 |