注释
变量
作用:给一段指定的内存空间起名,方便操作这段内容
数据类型 变量名 = 变量初始值;
常量
用于记录程序中不可更改的数据
宏常量:
#define 宏常量 常量值
const修饰的变量:
const 数据类型 常量名 = 常量值;
关键字
关键字是C++中预先保留的单词(标识符)
在定义变量或者常量时候,不要用关键字,否则会产生歧义。
标识符命名规则
数据类型
数据类型存在的意义:给变量分配合适的内存空间。
C++中能够表示整型的类型有几张,区别在于所占内存空间不同:
字符型变量并不是把字符本身放到内存中存储,而是将对应的ASCII编码放入到存储单元。
字符型变量对应ASCII编码
char c = 'a';
cout << "c's ASCII:" << (int)c << endl;
A-65
a-97
转义字符
作用:用于表示一些不能显示出来的ASCII字符。
- \n:将当前位置移到下一行开头
- \r:将当前位置移到本行开头
- \:代表一个反斜线字符\
数据输入
用于从键盘获取数据
cin >> 变量
bool类型中非零的值都代表真
取模运算,如果第一个数小于第二个数,结果等于第一个数。
两个小数是不可以做取模运算的。
三目运算符
语法:表达式1?表达式2:表达式3
如果表达式1的值为真,执行表达式2,并返回表达式2的结果
在C++中,三目运算返回的是变量,可以继续赋值
switch语句和if语句
switch缺点:判断时候只能是整型或字符型,不能是一个区间。
switch优点:结构清晰,执行效率高。
数组长度
sizeof(arr)/sizeof(arr[0])
冒泡排序
- 比较相邻的元素,如果第一个比第二个大,就交换他们。
- 对每一对相邻元素做同样的工作,执行完毕后,找到第一个最大值。
- 重复以上的步骤,每次比较次数-1,直到不需要比较。
排序总轮数 = 元素个数 - 1
每轮对比次数 = 元素个数 - 排序轮数 - 1
二维数组可以只指定列数
二维数组的首地址 == 二维数组第一行首地址
空指针和野指针
空指针:指针变量指向内存中编号为0的空间
用途:初始化指针变量
注意:空指针指向的内存不可以访问。
//指针变量p指向内存地址编号为0的空间
int *p = NULL;
//访问空指针报错,内存编号0~255为系统占用内存,不允许用户访问
cout << *p << endl;
野指针:指针变量指向非法的内存空间
常量指针
标题
const int * p = &a;
指针的指向可以修改,但指针指向的值不可以修改
*p = 20; //错误,指针指向的值不可以改
p = &b; //正确,指针的指向可以改
指针常量
int * const p = &a;
指针的指向不可以改,指针指向的值可以改
*p = 20;
p = &b; //错误
const既修饰指针,又修饰常量
指针的指向和指针执向的值都不可以修改
const int * const p = &a;
指针和数组
利用指针访问数组中的元素
指针和函数
作用:利用指针作函数的参数,可以修改实参的值
void swap(int *p1,int *p2){
int temp = *p1;
*p1 = *p2;
*p2 = temp;
}
结构体
结构体属于用户自定义的数据类型,允许用户存储不同的数据类型。
结构体创建时struct可以省略
结构体指针
利用操作符->通过结构体指针访问结构体属性
结构体中const使用场景
用const防止误操作。
将函数中的形参改为指针,可以减少内存空间,而且不会复制新的副本出来。