函数
每个c++程序都从main函数开始执行
函数的定义格式:
1 | 返回值类型 函数名(参数列表) |
语句
C++程序的最小完整执行指令都是以分号结尾的语句。
可以将一条语句写在多个行,不管中间有多少空格、回车符、换行符,最后都是以分号作为语句的结束。
程序注释
多行注释
以/*开头,然后以*/结束
1 | /* |
单行注释
1 | // 单行注释 |
块注释不能嵌套,既不能在块注释中再出现/* 或 */
hello world程序
1 |
|
标准输入输出库和cout
要使用标准输入输出库就要包含头文件#include<iostream>
stream是流的意思,io是输入input输出output的缩写。
#include指令称为包含预处理指令,意思是用文件iostream的内容来替换掉这个预处理指令
cout对象代表的是标准输出流对象(既代表终端窗口)
命名空间
一个c程序可能会使用其他人写的库,例如有A库和B库,这两个库中的全局变量或函数的名字都有可能相同,为了避免冲突,c引入了命名空间将这两个库区分开来。
C++自带的标准库中的所有对象、函数等都属于一个叫std的标准命名空间。
1 | using namespace std; 将整个标准名字空间std的名字都引入到程序中,写上这句话就可以直接调用std命名空间中的变量或函数了 |
名字空间限定
1 | 命名空间::变量/函数 |
用using引入单个名字
1 | using std::cout; |
字符串和字符
单引号括起来的表示一个字符
1 | 'n' ',' 'a' |
双引号括起来的表示一个字符串
1 | "abd" "123" "asd" |
\n和endl的区别
\n和endl都表示换行符,endl会强制程序的缓冲区里面的数据立即输出
\t表示制表符
宏定义
1 | #define 宏名 值 |
变量
变量是命名的内存块。
在c++中变量也称为对象
每个变量都有一个数据类型,例如:
1 | int i; |
{}初始值
1 | int i{2}; |
标准输入流对象cin
cin输入流对象,代表键盘对象
1 | double r; |
用户自定义类型
string类型
要使用string类型需要包含头文件
1 | #include<string> |
string类型有一个size()成员函数,可以返回string对象的字符个数
1 | string s1 = "abc"; |
substr(s,e)成员函数返回string对象下标s到e(不包含e)之间的字符构成的一个字符串
1 | string s1 = "123456"; |
可以用+将两个字符串对象拼接起来
1 | string s1 = "abc"; |
数字表示
用0b开头表示一串二进制表示一个二进制数
1 | 0b000010111 |
十六进制
用0x表示16进制数
1 | 0x12 0xFA 0xFF |
八进制
用0开头表示8进制数
1 | 012 044 0777 |
1 | std::dec // 以十进制方式输出 |

编译c++程序
1 | g++ 源文件名 -o 目标程序名 |
变量和数据类型
变量的定义格式
1 | 类型名 变量名{}; |
{}方式的初始化称为列表初始化
如果{}里面没有值,对于基本类型的变量,初始值默认为0,有的编译器则会发出警告或报错
信息损失则报错
1 | int a{1.2}; //1.2会截取小数部分,导致信息损失,所以会报错 |
auto
用auto定义一个有初始值的变量时,不需要明确指定类型,因为编译器能自动从变量的初始值推断出该变量的数据类型。
1 | auto b = true; // bool |
typeid运算符
可以用typeid运算符查询得到一个数据类型或变量的信息
1 | cout << typeid(int) .name() << endl; |
decltype
用decltype(exp)得到一个表达式的值的类型,并用这个类型来定义一个变量。
1 | decltype(3 + 4.5) c; |
基本类型
1 | wchar_t 宽字符类型,在windows平台上是16位 2字节类型 |
整型文字常量
字母u或U表示unsigned整型
字母l或L表示long整型
字母ll或LL表示 long long整型
1 | 18u // unsigned |
浮点型文字常量
默认是double
用f或F表示float
用l或L表示long double
1 | 3.14 |
字符串文字常量
L表示 wchar_t
u表示 char16_t
U表示 char32_t
u8前缀表示 UTF-8
1 | L'A' // wchar_t |
原始字符串
不需要处理转义字符
1 | R"1234\n" |
格式化输出
流操作符定义在2个头文件中
1 | iomanip.h |
ios.h
1 | std::dec; // 十进制输出 |
iomanip.h
iomanip的操纵符需要传递一个参数
1 | std::setw(n); //改变输出域的宽度 |
1 | cout << setprecision(2) << 3.1415926 << endl; |
强制类型转换
1 | (类型) 值 |
类型别名
可以用关键字using给一个数据类型起另外的名字,称为类型别名
1 | using 别名 = 类型; |

上面的意思是 如果定义了 USING_COMPILER_A则执行下面这部分,否则则执行另外这部分。
枚举
不同的枚举类型的值是不能相互比较或赋值的 。
1 | enum class Day{Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday}; |