数据类型
整型 浮点型 sizeof关键字 转义字符 字符串型 字符型 布尔型 输入/输出 cin cout
运算符
算术 赋值 比较 逻辑
程序流程结构
if 三目 switch while do...while for break continue
数组
- 一维数组,二维数组。冒泡排序
二维数组行数:sizeof(arr) / sizeof(arr[0])二维数组列数:sizeof(arr[0]) /sizeof(arr[0][0])
函数
返回值类型 函数名 (参数列表) { 函数体语句 return表达式 }
- 值传递 地址传递
指针
作用:直接访问内存。
//指针定义语法: 数据类型 * 变量名 ; int * p; int a = 10; //定义整型变量a //指针变量赋值 p = &a; //指针指向变量a的地址 *p //解引用指针变量和普通变量的区别
- 普通变量存放的是数据,指针变量存放的是地址
- 指针变量可以通过" * "操作符,操作指针变量指向的内存空间,这个过程称为解引用
- & 符号 获取变量的地址
- 指针可以记录地址
- 对指针变量解引用,可以操作指针指向的内存
空指针:
指针变量指向内存中编号为0的空间 NULL 指向的内存是不可以访问的
初始化指针变量,但是0-255是系统的,我们不可以访问。
野指针:指针变量指向非法的内存空间
const修饰:const右侧紧跟着的是指针就是常量指针,是常量就是指针常量
- 修饰指针 --- 常量指针 常量不能改,地址可以改。
- 修饰常量 --- 指针常量 指针不能改,常量可以改。
- 既修饰指针,又修饰常量 都不能改
//const修饰的是指针,指针指向可以改,指针指向的值不可以更改 const int * p1 = &a; p1 = &b; //正确 //*p1 = 100; 报错 //const修饰的是常量,指针指向不可以改,指针指向的值可以更改 int * const p2 = &a; //p2 = &b; //错误 *p2 = 100; //正确 //const既修饰指针又修饰常量 const int * const p3 = &a; //p3 = &b; //错误 //*p3 = 100; //错误指针和数组:
int arr[] = { 1,2,3,4,5,6,7,8,9,10 }; int * p = arr; //指向数组的指针 // p 指针即地址 //*p 是首地址,也是第一个元素。 p++可以遍历 for (int i = 0; i < 10; i++) { cout << *p << endl; p++; }指针和函数:利用指针作函数参数,可以修改实参的值 ==参数为指针,传参增加&.==
结构体
定义:
struct 结构体名 { 结构体成员列表 };结构体创建变量三种方式:
- struct 结构体名 变量名
- struct 结构体名 变量名 = { 成员1值 , 成员2值...}
- 定义结构体时顺便创建变量
结构体数组
struct 结构体名 数组名[元素个数] = { {} , {} , ... {} }结构体指针
struct student stu = { "张三",18,100, }; struct student * p = &stu;//取地址符 p->score = 80; //指针通过 -> 操作符可以访问成员结构体嵌套结构体
//教师结构体定义 包含学生的 结构体变量 struct teacher { int id; //编号 string name; //姓名 int age; //年龄 struct student stu; //子结构体 学生 };结构体做函数参数
值传递student stu,地址传递student *stuconst修饰结构体参数 修饰指针,常量指针,地址可以改,值不可以修改。
void printStudent(const student *stu) //加const防止函数体中的误操作