跟着网课比较系统地学一下
【【2023最新版C++】实战项目教程,清华武老师带你零基础一套快速学会c++】 https://www.bilibili.com/video/BV1eL41187JS/?share_source=copy_web&vd_source=6ecc92141938badce449ff0f5edde584
1.代码运行及标准
编译型语言:编译器将整个源代码翻译为机器码,生成二进制文件,一次性提交给计算机执行:C++、C
解释型语言:解释器将代码逐行解释为机器码提交给计算机:Python、JavaScript
代码运行:
2.常量
(1)使用符号变量
#define ZERO 0 //一般大写
宏定义,“#”开头的都是预处理语句,在编译之前预处理器会查找程序中的所有“ZERO”并替换为0
(2)const限定符
const int Zero = 0; //首字母大写的形式
必须赋值初始化,有详细的数据类型,而且会在编译阶段安全检查,运行时才完成替换
3.基本数据类型
告知计算机数据占了多大空间
(1)整型integral type
基本整型包括:char、short、int、long、long long、bool
可以灵活定义长度,实现跨不同计算机平台
(2)无符号整型integral type
定义时在类型前加unsigned
(3)char类型
表示字符
对字符类型的扩容:宽字符类型wchar_t,为Unicode字符集提供了专门的扩展类型char16_t长16位,char32_t长32位
(4)布尔类型
true:1 false:0
(5)浮点类型
单精度float(通常4字节)
双精度double(通常8字节)
扩展高精度类型long double(12或16字节)
可用E表示法表示浮点数,eg:10e-4
(6)字面值常量
整型字面值、浮点字面值
0x开头十六进制 0开头八进制
默认为int类型,超出选择能够表示的最小长度的那个类型,可加后缀进行表示
9527uLL ;表示unsigned long long
3.14L; 表示long double
字符字面值
单引号 ‘’ 字符字面值
双引号 " " 字符串字面值
特殊的,转义用“\”加字符," \" "
布尔字面值
true false
(7)类型转换
赋值时自动转换
4.复合数据类型
(1)数组
定义
类型 数组名[元素个数] ,[]中需要为常量或具体数字
初始化
正确的表达:
int a[4];
int a[]={1,2,3,4};
int a[4]={1,2,3};//剩余用0填充
注意:不能用数组对数组进行赋值,vs中未初始化的数组用0xCC填充所有字节
访问和遍历
(2)模板类vector
使用前的准备
数组的上层抽象,不固定长度,更安全,运行数据较低
需要包含头文件并使用std命名空间
#include<vector>
using namespace std;
基本用法
//初始化
vector<int> v;//定义容器v,进行了默认初始化
vector<char>v = {'a','b',c''};或vector<char>v {'a','b',c''};//列表初始化,拷贝初始化
vector<short>v(5,100);//直接初始化,5个short类型元素都初始化为100
//访问元素
v[3];
v[3]=...;
当下标超出定义,将会报错(相较于数组增加了安全检查)
v.size()可获得v所包含的元素个数
//遍历
for(;;)
for (int num : v);
//添加元素(相较于数组不能加长)
v.push_back(5);//在原数据之后添加了5
(3)字符串
#include<string>
using namespace std;
初始化:
//默认初始化
string s1;
//拷贝初始化
string s2=s1;
string s3="hello";
//直接初始化
string s4("hello");
string s5(8,"h");//hhhhhhhh
访问字符:
s4[2];// l
s4[s4.size()]//访问s4的最后一个字符
字符串相加(拼接)
注意:两个“” “”不可以直接相加,但可以对str1和str2拼接,也可以str1与“拼接”
(4)字符数组(C语言风格)
字符数组最后一个字符为空字符'\0'时,该字符数组才为一个字符串。字符串长度包括空字符
(5)读取输入字符串
1)输入操作符读取单词
cin >> str;//读取至str,空格或回车结束
2)getline读取一行信息
getline(cin,str3);//无回车
3)get读取一个字符
char ch;
ch = cin.get();
(6)简单读写文件
IO库提供用于文件输入的ifstream类和用于文件输出的ofstream类,需要引入头文件fstream
输入对象定义
ifstream input("路径名称");
输出对象定义
ofstream output("路径名称")
将cout改为output<<...<<endl;
(7)结构体
访问结构体内数据 “.”
(8)枚举
某个数据对象只能取有限个常量值的情况,提供一种批量创建符号常量的方式,即枚举类型enum
//定义枚举类型
enum week
{
Mon,Tue,...
};
默认情况下将整数值赋给枚举量,默认从0开始依次加1,也可以另外显式赋值,其后的值依次加1
调用week(下标)