C++

前言

C++是一款高运行效率的语言,在之后也将大量使用,因此做了这篇笔记方便之后知识点遗忘后可以查询

基本定义

1.2 注释

单行注释 / 内容 /
多行注释 /* 内容*/

1.3 变量

意义:给一段内存空间取名,方便我们管理内存空间
创建语法:数据类型 变量名 = 变量初始值

1.4 常量

宏常量(define)

使用方法:#define 常量名 常量值

静态变量

const 数据类型 变量名 = 变量值

1.5 关键字(标识符)

c++中具有特定意义,变量常量起名时不可使用

1.6 标识符命名规则

1. 不可以使用关键字
2. 命名只可使用下划线,数字,字母
3. 第一个只能是下划线或字母
4. 需要区分大小写
给变量起名时应做到见名知意

数据类型与输入

2.1数据类型

意义:给变量分配合适的内存空间

类型 占用空间 取值范围
字符类型 占用大小 取值范围
short(短整型) 2字节 -2^15^~2^15^-1
int(整型) 4字节 -2^31^~2^31^-1
long(长整型) windows:4 Linux:4(32位) 8(64位) -2^31^~2^31^-1
longlong(长长整型) 8字节 -2^63^~2^63^-1

2.2 sizeof关键字

作用:求得数据类型和变量占用的内存空间
语法: sizeof(数据类型/变量)

2.3 浮点型(float)

数据类型 占用空间 有效数字范围
float 4字节 7位有效
double 8字节 15-16位有效
小数计算机默认是double类型,3.14f则变为float类型
科学计数法表述小数: 3e2->3 * 10^2^ ,3e-2->3 * 0.1^2^

2.4 字符型

语法: char ch = ‘a’;
注意: 1.单引号括起来 2.单括号中只可为一位
大小: 一个字符占1个字节
字符型对应的ascll码:强转后打印后可得——(int)char
a-97
A-65

2.5转义字符

作用: 用来表示一些不能显示的ascll字符
常用转义字符:换行符:\n  反斜杠 \\  水平制表符\t——用于整齐的输出数据

2.6字符串

语法: char 字符串名 [] = “ “(C语言)  string 字符串名 [] =” “(c++,需要#include

2.7布尔类型(bool)

只有俩个数值,true真即1,false假即0,占一个字节
语法: bool falg = true;

2.8 数据的输入

作用: 从键盘上获取数据
关键字: cin
语法: cin >> 变量

运算符

3.1 算术运算符

运算符 术语 示例 结果
% 取余 10%3 1(整数取余保留整数)
++ 前置递增 a =2;b=++a a=3;b=3;
++ 后置递增 a=2;b=a++ a=3; b=2;
注:1. 不可进行小数取余运算
2. 前置先进行变量加减,再进行表达式计算,后置先进行表达式计算,后进行变量加减

3.2 赋值运算

符号:  =  +=  -=  *=   /= %=
运算: a+=2;–>a=a+2;其他也类似计算

3.3 比较运算符

作用: 用于表达式的比较,并返回一个真值或假值
使用的符号: == &nbsp;!=&nbsp;>=&nbsp;<=

3.4 逻辑运算符

作用: 用于根据表达式的值返回真值或假值

运算符 术语 示例 结果
! !a 如果a为假,则!a为真;如果a为真,则!a为假、
&& a&&b 如果a和b都为真,则结果为真,否则为假
&#124;&#124; a&#124;&#124;b 如果a和b中有一个为真则结果为真,二者都为假时,结果为假

程序流程结构

4.1 选择结构

4.1.1 if语句
单行if

作用: 执行满足条件的语句
语法: if(判断的条件,真则执行,假则不执行)
{
执行的内容
}

多行if

if(条件)
{
成立执行的语句
}else
{
不成立执行的语句
}

多条件if语句

语法: if(){}
else if()
{}else if()
{}

else{都不满足的执行语句}

if语句的嵌套

作用: 做到更精准的条件判断
if(条件一)
{
&nbsp; if(条件一下进一步的条件)
{

}

}

4.1.2 三目运算符

作用: 通过三目运算符实现简单判断
语法: 表达式?a:b
如果表达式为真,执行a,并返回a的值
如果表达式为假,执行b,并返回b的值
注: 返回的是变量,可以继续进行赋值操作

4.1.3 switch语句

作用: 执行多分支条件语句
switch(a)
{
case 1:
{

}break;(用于跳出执行,否则之后的语句将全部依次执行)
case 2
{

}break;
....
default:
{

}break;

}
注: switch语句中表达式类型只能是整型或者字符型

循环结构

4.2.1while 循环语句

作用: 满足循环条件,执行循环语句
语法: whille(循环条件){循环语句},只要循环条件为真,就执行循环语句
注: 需要有一个退出循环的出口

4.2.2 do….while循环语句

作用: 满足条件下,执行循环语句
语法:

do
{
执行的语句
}
while(判断语句)

注: 与while的区别为do while会先执行一遍执行语句

4.2.3 for循环语句

作用: 执行满足执行条件的语句
语法:

for(起始表达式;条件表达式;末尾循环体)
{
}

4.2.4 嵌套循环

作用: 在循环中再嵌套循环,用于解决实际问题

4.3 跳转语句

4.3.1 break语句

作用: 用于跳出选择结构或者循环结构
break的使用时机:
1.用于switch语句中,作用是终止case并跳出swich
2.出现在循环语句中,作用是跳出当前的循环语句
3.出现在嵌套语句中,跳出最近的内层循环

4.3.2 continue语句

作用: 在循环语句中,跳过本次循环中尚未执行的语句,继续执行下一次循环
注: continue跳出的是单次循环,循环并不会结束,break是结束循环

4.3.3 goto语句

作用: 可以无条件跳转语句
语法:

goto 标记名;
…..
标记名:

5. 数组

5.1 数组概述

数组是一个存放了相同类型的数据元素
特点:
1.数组中的每个数据元素都是相同的数据类型
2.数组是由连续的内存位置组成的

5.2 一维数组
5.2.1 一维数组的定义方式

1.数组类型 数组名[数组长度];
2.数组类型 数组名[数组长度]={值1,值2…..};
3.数组类型 数组名[]={值1,值2….}

5.2.2 一维数组数组名

用途:
1.可以统计整个数组在内存中的长度
2.可以获取数组在内存中的首地址

5.3二维数组

5.3.1 二维数组的定义

定义方式:
1.数组类型 数组名 [行数][列数];
2.数组类型 数组名 [行数][列数] = {&nbsp;{数据1,数据2},{数据3,数据4}&nbsp;}
3.数据类型 数组名[行数][列数]={数据1,数据2,数据3,数据4}
4.数据类型 数据名[][列数]={数据1,数据2,数据3,数据4};
注: 可以通过嵌套循环来打出多维数组

5.3.2 二维数组的数组名

1.可以查看二维数组占用的数据空间 sizeof(数组名)
2.二维数组的首地址 cout << (int)数组名 <<end1

函数

6.1 函数概述

将一段常用的代码封装起来,减少代码的重复

6.2 函数的定义

定义步骤:
1.返回值类型
2.函数名
3.参数列表
4.函数体语句
5.return表达式 (无返回值时可以不写)
语法:

返回值类型 函数名 (参数列表)
{
函数体语句
return表达式
}

6.3 函数的调用

功能: 使用定义好的函数
语法: 函数名(参数)

6.4 值传递

定义: 就是将函数调用时实参的数值传给形参
注: 形参发生改变不会影响实参
形参是再另外取俩个空间,接收实参传递过来的值,因此不会改变实参的值

6.5 函数的常见样式

1.无参无返
2.有参有返
3.有参无返
4.无参有返

6.6 函数的声明

当函数在主函数后,需要写一个声明在主函数前面
函数类型 函数名(数据列表)

6.7 函数的分文件编写

1.创建后缀名为.h的头文件
2.创建后缀名为.cpp的源文件
3.在头文件中写函数的声明
4.在源文件中写函数的定义

7. 指针

7.1&2 指针的定义与使用

作用: 通过指针间接访问一片内存空间
一片空间保存着另一片空间的地址,即可实现间接访问
指针的定义: 数据类型 指针变量名 = & 记录的变量
指针的使用: 在指针前加
表示解引用 等于访问指针所指向的那个变量

7.3 指针所占用的内存空间

指针在32位操作系统下默认用四个字节保存地址,在64位操作系统下用八个字节保存地址

7.4 空指针和野指针

空指针: 指针变量指向内存中编号为0的空间
用途: 用于初始化指针变量
注意: 空指针指向的内存是不可访问的(0-255的空间编号是系统使用的)
野指针: 指针变量指向未知空间

7.5 const修饰指针

1.const修饰指针–常量指针
2.const修饰常量–指针常量
3.const即修饰常量,又修饰指针

int a = 10;
int b = 10;
int *p = &a

常量指针:
const int *p =&a;
特点: 修饰的是指针,指针的指向可以修改,但指针指向的值不可修改
指针常量:
int * const p = &a;
特点: 修饰的是常量,指针的指向不可以修改,指针的指向的值可以修改
即修饰指针,又修饰常量:
const int const *p = &a;
指针的指向和指针指向的值都不可以改变

7.6 指针与数组

利用指针来访问数组

int a[10]={}
int *p = a;
p–>a[0],p++,p–>a[1]
p偏移了四个字节

7.7 指针与函数

作用: 利用指针作为函数参数,可以实现实参的改变
地址传递:

void a (int *p1 , int *p2)
a(&b,&c)

注: 因为指针传递的是地址,使用操作的是同一片空间。实参和形参因为操作的表示同一片地址,所以形参的改变并不影响实参的值。

8. 结构体

8.1 基本概念

结构体属于用户自定义的数据类型,允许用户储存不同的数据类型

8.2 结构体的定义和使用

语法: struct 结构体名称 {结构体成员列表};
三种创建结构体变量的方式:
1.struct 结构体名 变量名
2.struct 结构体名 变量名 = {成员1,成员2…..}
3.定义结构体时顺便定义变量
赋值:
通过.来给成员赋值,变量名.成员名
注: 创建结构体时struct不可以省略,创建结构体变量时可以省略

8.3 结构体数组

作用: 将自定义的结构体放入到数组中方便维护
语法: struct 结构体名 数组名[元素个数] =