数据存储

数据存储基本格式——数据类型

  • 整形
  • 浮点数
  • 布尔值
  • 字符

数据存储容器

  • 数组
  • 字符串
  • 集合
  • 键值对(字典)

不同语言的数据存储(有所差异)

Cpp

  1. 数据类型
  • 基础类型:int,float,char,bool(还有其他几个变种,这里不说了)
  • 复合类型:struct,enum,union,class
  1. 数据容器
  • array -> 静态数组,大小固定,一般数据存储在栈上
  • vector -> 动态数组,栈上存个堆地址,数据存在堆上
  • string -> char数组
  • set -> 红黑树集合
  • unordered_set -> 哈希表集合
  • map -> 红黑树字典
  • unordered_map -> 哈希表字典

py

  1. 数据类型
  • int,float,string,bool
  1. 数据容器
  • list(vector)
  • tuple
  • string
  • set
  • dict(map)

javascript

  1. 数据类型
  • number,string,boolean,object,null,undefine(没写全,还有两种属于number的子类,分别对应int和float)
  1. 数据容器
  • array,string,set,map(dict)

数据存储的内存模型(C/CPP)

  1. 内存:
    • 内存分为四区:堆,栈,全局区,代码区
  2. 数据存储区域
    1. 全局变量(数据)存储在全局区
    2. 局部变量(数据):
      • 如果是数据类型,直接存储到栈上
      • 如果是数据容器,栈上存储其对应的堆的内存地址,实际数值存储在堆
text
|----栈区----|              |--堆区--|
|============|              |========|
|变量a:参数  |              |--------|
|变量b:参数  |              |--------|
|容器c:堆地址|   ------>    |容器c参数|
|容器d:堆地址|   ------>    |容器d参数|
|===========|             |=========|
  1. 栈区相对于一份kv表,k对应的是该数据的id,v分两种情况,基础数据类型存值,容器存堆地址