c语言中各数据类型在内存中的存储方式.docx
《c语言中各数据类型在内存中的存储方式.docx》由会员分享,可在线阅读,更多相关《c语言中各数据类型在内存中的存储方式.docx(7页珍藏版)》请在冰豆网上搜索。
![c语言中各数据类型在内存中的存储方式.docx](https://file1.bdocx.com/fileroot1/2022-12/9/d1509caa-d532-4112-bc4e-9c8d5ebd9041/d1509caa-d532-4112-bc4e-9c8d5ebd90411.gif)
c语言中各数据类型在内存中的存储方式
c语言中各数据类型在内存中的存储方式
基本的数据类型有:
int4
long4
short2
signedchar1
unsignedchar1
unsignedlong4
unsignedshort2
float4
double8
基本为:
char1字节
short2字节
int4字节
long4字节
float4字节
double8字节
typedefstruct
{
char;
char;
short;
};
charcharshort类型的结构体占4字节内存。
┌───┬───┐
│char│char│2字节
└───┴───┘
┌───┬───┐
│short│2字节
└───┴───┘
typedefstruct
{
short;
char;
char;
}
Shortcharchar类型的结构体占4字节内存.
┌───┬───┐
│short│2字节
└───┴───┘
┌───┬───┐
│char│char│2字节
└───┴───┘
typedefstruct
{
char;
short;
char;
}csc;
Charshortchar类型的结构提占6字节内存,以short做2字节对齐
┌───┬┄┄┄┐
│char│null│2字节
└───┴┄┄┄┘
┌───┬───┐
│short│2字节
└───┴───┘
┌───┬┄┄┄┐
│char│null│2字节
└───┴┄┄┄┘
typedefstruct
{
double;
char;
char;
char;
}
doublecharcharchar类型的结构体占16字节内存
8字节
┌───┬───┬───┬───┬───┬───┬───┬───┐
│double│
└───┴───┴───┴───┴───┴───┴───┴───┘
8字节
┌───┬───┬───┬┄┄┄┬┄┄┄┬┄┄┄┬┄┄┄┬┄┄┄┐
│char│char│char│null│
└───┴───┴───┴┄┄┄┴┄┄┄┴┄┄┄┴┄┄┄┴┄┄┄┘
typedefstruct
{
char;
char;
double;
char;
char;
char;
}
charchardoublecharchar类型的结构体占24字节内存
8字节使用2字节空余6字节
┌───┬───┬┄┄┄┬┄┄┄┬┄┄┄┬┄┄┄┬┄┄┄┬┄┄┄┐
│char│char│null│
└───┴───┴┄┄┄┴┄┄┄┴┄┄┄┴┄┄┄┴┄┄┄┴┄┄┄┘
8字节
┌───┬───┬───┬───┬───┬───┬───┬───┐
│double│
└───┴───┴───┴───┴───┴───┴───┴───┘
8字节使用3字节空余5字节
┌───┬───┬───┬┄┄┄┬┄┄┄┬┄┄┄┬┄┄┄┬┄┄┄┐
│char│char│char│null│
└───┴───┴───┴┄┄┄┴┄┄┄┴┄┄┄┴┄┄┄┴┄┄┄┘
typedefstruct
{
char;
int;
double;
char;
char;
char;
int;
}
charintdoublecharcharcharint类型的结构体占用24字节内存
8字节使用2字节空余6字节
┌───┬┄┄┄┬┄┄┄┬┄┄┄┬───┬───┬───┬───┐
│char│null│int│
└───┴┄┄┄┴┄┄┄┴┄┄┄┴───┴───┴───┴───┘
8字节
┌───┬───┬───┬───┬───┬───┬───┬───┐
│double│
└───┴───┴───┴───┴───┴───┴───┴───┘
8字节使用3字节空余5字节
┌───┬───┬───┬┄┄┄┬───┬───┬───┬───┐
│char│char│char│null│int│
└───┴───┴───┴┄┄┄┴───┴───┴───┴───┘
typedefstruct
{
char;
short;
int;
double;
char;
int;
float;
}
charshortintdoublecharintfloat类型的结构体占用32字节内存
8字节使用2字节空余6字节
┌───┬┄┄┄┬───┬───┬───┬───┬───┬───┐
│char│null│short│int│
└───┴┄┄┄┴───┴───┴───┴───┴───┴───┘
8字节
┌───┬───┬───┬───┬───┬───┬───┬───┐
│double│
└───┴───┴───┴───┴───┴───┴───┴───┘
8字节使用3字节空余5字节
┌───┬┄┄┄┬┄┄┄┬┄┄┄┬───┬───┬───┬───┐
│char│null│int│
└───┴┄┄┄┴┄┄┄┴┄┄┄┴───┴───┴───┴───┘
8字节使用3字节空余5字节
┌───┬───┬───┬───┬┄┄┄┬┄┄┄┬┄┄┄┬┄┄┄┐
│float│null│
└───┴───┴───┴───┴┄┄┄┴┄┄┄┴┄┄┄┴┄┄┄┘
对上一个结构体做位置变更,查看内存占用情况
typedefstruct
{
char;
char;
short;
int;
int;
float;
double;
}
经过位置变更,占用内存为24字节
┌───┬───┬───┬───┬───┬───┬───┬───┐
│char│char│short│int│
└───┴───┴───┴───┴───┴───┴───┴───┘
┌───┬───┬───┬───┬───┬───┬───┬───┐
│int│float│
└───┴───┴───┴───┴───┴───┴───┴───┘
┌───┬───┬───┬───┬───┬───┬───┬───┐
│double│
└───┴───┴───┴───┴───┴───┴───┴───┘
typedefstruct
{
short;
char;
char;
char;
int;
}
shortcharcharcharint类型的结构体占用12字节内存
4字节
┌───┬───┬───┬───┐
│short│char│char│
└───┴───┴───┴───┘
4字节使用1字节剩余3字节
┌───┬┄┄┄┬┄┄┄┬┄┄┄┐
│char│null│
└───┴┄┄┄┴┄┄┄┴┄┄┄┘
4字节
┌───┬───┬───┬───┐
│int│
└───┴───┴───┴───┘