1.结构体和共用体
目录
1.1结构体和共用体各自有什么特点
1.1.1结构体
1)可以批量存储数据
2)可以存储不同类型的数据
3)支持结构体嵌套
1.1.2共用体
1)使用共用体变量的目的是希望用同一个内存段存放几种不同类型的数据,但在每一个瞬间只能存放其中一种,而不是同时存放几种;
2)能够访问的是共用体变量中最后一次被赋值的成员,在对一个新的成员赋值后原有的成员就失去作用。
3)共用体变量的地址和它各成员的地址都是同一个地址;
4)不能对共用体变量名赋值;不能企图引用变量名来得到一个值;不能在定义共用体变量时对它初始化;不能用共用体变量名作为函数参数。
1.2结构体对齐原则
1)结构体变量的首地址能够被其最宽基本类型成员的大小所整除;
2) 结构体每个成员相对结构体首地址的偏移量(offset)都是成员大小的整数倍,如有需要编译器会在成员之间加上填充字节(internal adding);
3)结构体的总大小为结构体最宽基本类型成员大小的整数倍,如有需要编译器会在最末一个成员之后加上填充字节{trailing padding}。
2.Git
Git是目前世界上最先进的分布式版本控制系统。每一台客户端都有完整的版本备份,所有的版本提交不需要依赖中央服务器,只有多人协作时候,需要用服务器交换一下版本库。
2.1Git作用
1)版本控制
2)多人协作
2.2Git操作
1)工作区:相当于工作的文件夹
2)版本库:Git备份的位置
3)远程仓:远程的服务器
2.3Git命令
注意:文中所有命令的<>代表必选参数,[ ]代表可选参数,<>中内容为对参数的解释,输入命令时候需要进行替换,比如git add <文件名>代表git add这个命令后面要跟一个文件名,比如git add test.txt。
2.3.1通用操作
在还未成为git仓库的文件夹中,右键菜单打开“Git Bash Here”终端。
ctrl+C:停止当前命令的输入或者执行
ctrl+L:清屏
2.3.2配置个人信息
git config --global user.name "name"
git config --global user.email "[email protected]"
2.3.3中文显示(和执行路径无关)
git config --global core.quotepath false
2.3.4查看个人配置信息
git config -l
2.3.5初始化仓库
git init
2.3.6提交工作区的内容到版本库
git add <文件名>:*代表所有的文件--- git add *
git commit -m "<提交的内容>"
2.3.7查看版本的记录
git log
2.3.8查看工作区的状态
git status
2.3.9丢掉工作区的内容
git checkout <文件名>
2.3.10版本回退
git log
git reset --hard <版本ID>
2.3.11版本前进
git reflog :显示引用记录,引用记录包括所有的提交信息
git reset --hard <版本ID>
3.json
JSON是JavaScript Object Notation的缩写,它是一种数据交换格式。
3.1json数据类型
1)number:和JavaScript的number完全一致;相当于C中的int类型
2)boolean:就是JavaScript的true或false;相当于c++中的bool类型
3)string:就是JavaScript的string;相当于c++的string类型
4)null:就是JavaScript的null;相当于C的NULL类型
5)array:就是JavaScript的Array表示方式——[];相当于C的数组
6)object:就是JavaScript的{ ... }表示方式。相当于C++的类或者C的结构体
3.2基本格式
1)json的数据类型在源码实现中和具体的编程语言有关,比如boolean在C中并没有相应的类型,C相关的实现库可能会用0和1表示;
2)json以大括号起始和结尾;
3)内容都是以键值对的形式存在;
3)所有的键都是字符串;
4)值的类型不一定,属于JavaScript 的基本数据类型;
5)每个键值对以,
分割;
6)最后一个键值对不加逗号。
示例:
{
"name": "小明",
"age": 14,
"gender": true,
"height": 1.65,
"grade": null,
"middle-school": "\"W3C\" Middle School",
"skills": [
"JavaScript",
"Java",
"Python",
"Lisp"
]
}
3.3json基本操作
1)Json序列化:可以理解为利用程序生成Json字符串的过程。
2)Json反序列化:可以理解为利用程序将已有的Json字符串解析出我们需要的值的过程。