一、C++基础知识
一、C++基础知识
1.注释
单行注释 //
多行注释 /…/
2.变量
1、创建变量:数据类型 变量名称 = 变量初始值
2、创建常量: #define const
3、标识符命名规则:字母、数字、下划线(第一个字符只能是字母或者下划线) 不能是关键字 区分大小写
3.数据类型
给变量分配合适的内存空间
sizeof() | 数据类型/变量占用内存大小 |
---|---|
整型 | short < int <= long < long long |
浮点型 | float(4字节) double(8字节) |
字符型 | char ch = ‘a’ (1个字节、创建字符型变量要用单引号、且单引号内只能有一个字符) ASCII码 a 97 |
转义字符 | 换行符\n 反斜杠\ 水平制表符\t |
字符串类型 | char 变量名[] = " 字符串值" (中括号 双引号)要包含头文件 #include |
布尔类型 | bool true 1 真 false 0 假 |
数据的输入 cin>>
4.运算符
运算符:
两数相除: /取整 %取(模)余运算
两个小数可以相除,不可以取余
自增、自减、比较、逻辑运算符(与 && 、或 || 、非 !)
5.程序流程结构
5.1顺序结构:
5.2 选择结构:
A:IF语句
1. if(条件)语句
2. if(条件){ } else{ }
3. if(条件1){ } elseif(条件2){ } else{ }
4. 嵌套if语句
B:三目运算符
表达式1 ?表达式2 :表达式3 返回的是变量,可以继续赋值
C:switch语句 (多条件分支语句)
switch(表达式){ case 结果1:执行语句;break;
case 结果2:执行语句;break;
…}
switch语句中表达式只能是整型或者字符型
case中如果没有break,那么程序会一直向下执行
与if语句相比,对于多条件判断时,switch的结构清晰,执行效率高,缺点是switch不可以判断区间
5.3循环结构:
A:while(循环条件){循环语句}
B:do{循环语句}while(循环条件)
C:for(起始表达式;条件表达式;末尾循环体){循环语句;}
D:嵌套循环
5.4跳转语句:
A:break语句 1.出现在switch语句中 2.循环语句中 3.循环嵌套语句中
B:continue语句 跳出本次循环
C:goto语句 如果标记名称存在,执行到goto语句时会跳转到标记的位置
6.数组
6.1一维数组:
定义方式:1、数据类型 数组名[数组长度];
2、数据类型 数组名[数组长度] = {值1,值2 …};
3、数据类型 数组名[ ] = {值1,值2 …};
数组下标从0开始索引、数组名不要和变量重名
用途: 1、统计整个数组在内存中的长度
2、可以获取数组在内存中的首地址
冒泡排序: 1、比较相邻元素,若左边比右边大,则交换位置
2、对每一对相邻元素进行比较,找到第一个最大值
3、重复上述步骤,每次比较次数减一,知道不需要比较
6.2 二维数组:
定义方式:1、数据类型 数组名[行数][列数];
2、数据类型 数组名[行数][列数] = {{数据1,数据2},{数据3,数据4}};
3、数据类型 数组名[行数][列数] = {数据1,数据2,数据3,数据4 };
4、数据类型 数组名[ ][列数] = {数据1,数据2,数据3,数据4 };
用途: 1、统计整个数组在内存中的长度
2、可以获取二维数组在内存中的首地址
7.函数
函数:
语法: 返回值类型 函数名(参数列表){函数体语句 return 表达式}
值传递: 函数调用时,实参将值传递给形参。如果形参发生变化,并不会影响实参
常见样式: 无参无返 有参无返 无参有返 有参有返
函数声明: 函数声明可以多次,但函数定义只能有一次
若函数定义在main函数后面,则应提前声明
分文件编写:
1、创建后缀名为.h的头文件
2、创建后缀名为.cpp的源文件
3、在头文件中写函数的声明
4、在源文件中写函数
8.指针
指针:
作用:通过指针间接访问内存
8.1、空指针
指针变量指向内存中编号为0的空间
用途:初始化指针变量 空指针指向的内存是不可以访问的
0~255之间的内存编号是系统占用的,因此不可以访问
8.2、野指针:程序中,尽量避免出现野指针
空指针和野指针都不是我们申请的空间,因此不要访问
8.3、const修饰指针有三种情况:
1、const修饰指针–常量指针
常量指针:指针的指向可以修改,但是指针指向的值不可以改 const int p = &a;
2、const修饰常量–指针常量
指针常量:指针的指向不可以改,但指针指向得值可以改 int const p = &a;
3、const既修饰指针,又修饰常量
const既修饰指针,又修饰常量,则都不能修改 const int * const p = &a;
8.4、指针和数组:
利用指针访问数组中的元素
8.5、指针和函数:
利用指针做函数参数,可以修改实参的值
9.结构体
9.1、结构体:
用户自定义的数据类型,允许用户存储不同的数据类型
语法:struct 结构体名{结构体成员列表};
9.2、结构体数组:
struct 结构体名 数组名[元素个数] = {{},{},{}…};
9.3、结构体指针:
利用操作符 -> 可以通过结构体指针访问结构体属性
9.4、结构体嵌套结构体:
在结构体中可以定义另一个结构体作为成员,用来解决实际问题。
9.5、结构体做函数参数:
将结构体作为参数向函数中传递
传递方式:1、值传递 2、地址传递
9.6、结构体中const的使用场景:
用const来防止误操作