C++基础(2)
运算符:
作用:用于执行代码的运算
分类:
算术运算符:用于处理四则运算;
赋值运算符:用于将表达式的赋值给变量;
比较运算符:用于表达式的比较,并返回一个真值或假值;
逻辑运算符:用于根据表达式的值返回真值或假值;
算数运算符:
基本运算符:+:正号或加号,表示正数或者进行加法运算;+3,1+2=3;
-:负号或者减号,表示负数或者进行减法运算;-2,3-1=2;
*:乘;2*3=6;
/:除;6/2=3;
1、整数相除,不保留小数部分,还是整数;
2、除数不能为零;
%:取模(取余),10%3=1;
得到的结果是两个数相除后的余数
++:后置递增,a=2;b=++a;a=3;b=3;
前置递增,a=2;b=a++;a=3,b=2;
--:后置递减,a=2;b=--a;a=1;b=1;
前置递减,a=2;b=a--;a=1,b=2;
赋值运算符:
运算符:=:赋值,直接赋值;a=2,b=3;a=2,b=3;
+=:加等于,进行加运算并赋值;a+=2相当于a=a+2;
-=:减等于,进行减运算并赋值;a-=2相当于a=a-2;
*=:乘等于,进行乘运算并赋值;a*=2相当于a=a*2;
/=:除等于,进行除运算并赋值;a/=2相当于a=a/2;
%=:模等于,进行模运算并赋值;a%=2相当于a=a%2;
比较运算符:
运算符:==:相等于,相等结果返回1,否则返回0;
!=:不等于,不相等结果返回1,否则返回0;
<:小于,符合要求结果返回1,否则返回0;
>:大于,符合要求结果返回1,否则返回0;
<=:小于等于,符合要求结果返回1,否则返回0;
>=:大于等于,符合要求结果返回1,否则返回0;
逻辑运算符:
运算符:!:非,如果a为真,则!a就为假;如果a为假,则!a就为真;
&&:与,如果a和b都为真,运算结果才为真,否则为假。
||:或,如果a和b一个为真,运算结果就为真,二者全为假,结果为假。
程序流程机构:
选择结构:
单行if语句: if(条件语句){语句A;}
条件满足运行执行语句A,不满足不执行语句A。注意:条件语句后不加分号。
多行if语句: if(条件语句){语句A;} else{语句B;}
条件满足运行执行语句A,不满足不执行语句B。注意:条件语句后不加分号。
多条件if语句:if(条件1){语句A;} else if(条件2){ 语句B;} ……else{语句N;}
条件1满足运行执行语句A,条件2满足执行语句B,逐一对比条件,都不满足执行最后的语句N。注意:条件语句后不加分号。
嵌套if语句:if(条件1){if(条件2){语句B;}}
多层条件筛选。
三目运算符:表达式1 ? 表达式2 : 表达式3
表达式1为真,执行表达式2,否则执行表达式3。
swich语句:多分支选择
语法:swich(表达式){
case 结果1:执行语句;break;
case 结果2:执行语句;break;
case 结果3:执行语句;break;
……
default:执行语句;break;
}
表达式满足那个结果就执行那个执行语句,都不满足执行default默认语句。
循环结构:
while循环语句:循环条件一直为真,就一直执行循环语句。
语法:while(循环条件){循环语句;}
do…while循环语句:先执行一次循环语句,在判断条件,
语法:do {循环语句;} while(循环条件);
for循环语句: 满足循环条件,执行循环语句。
语法:for(起始表达式;条件表达式;末尾循环体) {循环语句;}
嵌套循环语句:在循环体内在嵌套一层循环。
跳转语句:
break:用于跳出选择结构或者循环结构;
使用时机:1、出现在swich条件语句中,作用为终止case并跳出swich。
2、出现在循环语句中,作用跳出当前的循环语句。
3、出现在嵌套语句中,跳出最近的内层循环语句。
continue:在循环语句中,跳过本次循环中余下的未执行语句,直接进行下一次循环。
goto:无条件的跳转语句
语法:goto 标记;如果标记名存在,就执行到goto语句时,会跳转标记的位置。
数组:所谓数组,就是一个放了相同类型的数据元素集合
特点一:数组中的每个数据元素都是相同的数据类型。
特点二:数组是有连续的内存位置组成的。
一维数组定义方式:
1、数据类型 数组名 [数组长度];
2、数据类型 数组名 [数组长度] = {值1,值2,……};
3、数据类型 数组名[] = {值1,值2,……};
一维数组名用途:
1、可以统计整个数组在内存中的长度 sizeof(arr)
2、可以获取数组在内存中的首地址 cout << arr <<endl;
二维数组定义方式:
1、数据类型 数组名 [行数][列数];
2、数据类型 数组名 [行数][列数]= {值1,值2,值3,值4,……};
2、数据类型 数组名 [行数][列数]= {{值1,值2},{值3,值4},……};
3、数据类型 数组名[] [列数]= {值1,值2,值3,值4,……};
二维数组名用途:
1、查看二维数组占用的内存空间大小
2、可以查看二维数组的首地址
函数:
作用:将一段经常使用的代码封装起来,减少代码重复。
一个较大的程序,一般分为若干程序块,每个模块实现特定的功能。
函数的定义:
1、返回值类型
2、函数名
3、参数表列
4、函数体语句
5、return表达式
语法:
返回值类型 函数名(参数表列){
函数体语句;
return 表达式;
}
函数的调用:函数名(参数);
值传递:
定义函数实现两个数字进行交换函数。
值传递时, 如果形参发生,并不会影响实参
函数的常见样式:
1、无参无返
2、有参无返
3、无参有返
4、有参有返
函数声明:返回值类型 函数名(形参列表);
告诉编译器函数名称及如何调用函数,函数的实际主体可以单独定义。
函数的声明可以多次,函数的定义只能有一次。
函数的分文件编写:让代码结构更加清晰。
函数分文件编写一般有四个步骤:
1、创建后缀名为.h的头文件
2、创建后缀名为.cpp的源文件
2、创建后缀名为.cpp的源文件
3、在头文件中写函数的声明;需要写头文件的框架。
4、在源文件中写函数的定义;需要引入定义的头文件。
指针:记录地址;
定义指针的语法:数据类型 * 指针变量名;
让指针指向变量的地址:指针变量 = &变量;
使用指针:可以通过解引用的方式来找到指针指向的内存。
指针前加 * 代表解引用,找到指针指向内存中的数据。
指针占内存空间: 在32位操作系统下,指针是占4个字节空间大小,不管是什么数据类型;在64位操作系统,指针是占8个直接空间大小。
空指针:指针变量指向内存中编号为零的空间;
用途:初始化指针变量;
注意:空指针指向的内存是不可以访问的
野指针:指针变量指向非法的内存空间。
const修饰指针:
const 数据类型 * 指针变量
1、const修饰指针--常量指针:指针指向可以改,指针指向的值不可以改。
数据类型 * const 指针变量
2、const修饰常量--指针常量:指针指向不可以改,指针指向的值可以更改。
const 数据类型 * const 指针变量
3、const即修饰指针,又修饰常量:指针指向和指向的值都不可以改。
指针和函数:值传递: 如果形参发生,并不会影响实参;
用指针进行地址传递:形参改变,实参跟着改变;
结构体:
结构体定义:struct 结构体名 {结构体成员列表};
通过结构体创建变量的方式有三种:
1、struct 结构体名 变量名
2、struct 结构体名 变量名 = {成员1值,成员2值}
3、定义结构体时顺便创建变量
结构体数组:将自定义的结构体放入到数组中方便维护
语法:struct 结构体名 数组名{元素个数} = {{},{},{},……{}}
结构体指针:通过指针访问结构体中的成员;利用操作符->可以通过结构体指针访问结构体属性;
结构体嵌套结构体:结构体中的成员可以是另一个结构体;
结构体做函数参数:将结构体作为参数向函数中传递;值传递、地址传递;
结构体中const使用场景:用const来防止误操作。形参前面加const,一旦函数体中有写操作就会报错,可以防止我们的误操作。

浙公网安备 33010602011771号