1 数据类型
1.1 枚举类型
枚举是一种用户自定义的类型,可以将数字标号定义为具体的符号
枚举一般用于对各种不同的状态,定义可识别的符号
- 如在某个场景中使用1、2、3来表示红黄蓝
- 那么可以使用枚举来对1、2、3来进行具像化,如下:
- 枚举本质上是数字
- 默认从0开始递增,也可以手动指定,如上指定为RED=1,那么YELLOW为2
- 枚举可以配合switch case一起使用
2 流程控制
2.1 while
2.2 do while
- while循环,如果条件不成立,循环体一次都不执行
- do while循环,如果条件判断不成立,最少会执行一次循环体
2.3 for loop
2.4 go to
会打印1个a还有无数个b。
3 数组
3.1 数组遍历
普通遍历
高级遍历
3.2 字符数组
C语言风格
3.3 多维数组遍历
4 指针
指针变量也是变量,只不过指针变量里面存储的内容是地址。
野指针:被声明但未被初始化的指针,会指向随机的内存空间。
为避免野指针,应养成良好的习惯,及时初始化,或将指针赋为空指针更为安全。
int *p = NULL;
int *p = nullptr;
4.1 指针运算
指针可以进行加减操作,p++虽然看起来只加了一,但是实际上加了p所指向的数据类型所占用的字节数。
4.2 动态内存分配
new运算符分配内存,delete运算符释放内存。
4.3 指针悬挂
p1和p2指向同一处内容,如果此时把p1 delete(内存回收),那么p1和p1所指向的内容都会消失,此时p2就会产生指针悬挂问题。
解决方案:
- 尽量不要使用指针和指针之间的赋值
- 在delete之前,确保此空间100%不再被使用。
4.4 const指针
指向const的指针:表示指向区域的数据是常量,是不可变的,但是指针的指向可以变更。
语法:
用法:
const指针:指针本身是常量,指针的指向不可改变,所以const指针在定义的时候就必须初始化。
语法;
用法:
指向const的const指针:指针和指向的区域都不可变,在定义时必须初始化
语法:
使用场景:
- 需要常量的同时也需要动态内存分配
- 因为动态内存分配只能通过指针实现