数据存储
数据存储基本格式——数据类型
- 整形
- 浮点数
- 布尔值
- 字符
数据存储容器
- 数组
- 字符串
- 集合
- 键值对(字典)
不同语言的数据存储(有所差异)
Cpp
- 数据类型
- 基础类型:int,float,char,bool(还有其他几个变种,这里不说了)
- 复合类型:struct,enum,union,class
- 数据容器
- array -> 静态数组,大小固定,一般数据存储在栈上
- vector -> 动态数组,栈上存个堆地址,数据存在堆上
- string -> char数组
- set -> 红黑树集合
- unordered_set -> 哈希表集合
- map -> 红黑树字典
- unordered_map -> 哈希表字典
py
- 数据类型
- int,float,string,bool
- 数据容器
- list(vector)
- tuple
- string
- set
- dict(map)
javascript
- 数据类型
- number,string,boolean,object,null,undefine(没写全,还有两种属于number的子类,分别对应int和float)
- 数据容器
- array,string,set,map(dict)
数据存储的内存模型(C/CPP)
- 内存:
- 内存分为四区:堆,栈,全局区,代码区
- 数据存储区域
- 全局变量(数据)存储在全局区
- 局部变量(数据):
- 如果是数据类型,直接存储到栈上
- 如果是数据容器,栈上存储其对应的堆的内存地址,实际数值存储在堆
|----栈区----| |--堆区--|
|============| |========|
|变量a:参数 | |--------|
|变量b:参数 | |--------|
|容器c:堆地址| ------> |容器c参数|
|容器d:堆地址| ------> |容器d参数|
|===========| |=========|
- 栈区相对于一份kv表,k对应的是该数据的id,v分两种情况,基础数据类型存值,容器存堆地址