本博客配套视频:黑马程序员
本博客参考博客:https://blog.csdn.net/sunshine_world/article/details/107688106
第一章 C++初识
1.1 第一个C++程序
框架
#include <iostream> //注意没有分号,包含命名,意思是把文件iostream中的内容包含在程序中 using namespace std; //意思是使用命名空间std,C++库中的类和函数是在std中声明的 int main() //主函数首部 { //主函数开始 system("pause"); return 0; //如果程序正常结束,向操作系统返回一个零值 } //主函数结尾
书写hello world
#include <iostream> using namespace std; int main() { cout << "hello world" << endl; system("pause"); return 0; }
hello world 请按任意键继续. . .
错误示例:单引号不行,这里不像Python
cout << 'hello world' << endl; //错误
1.2 注释
1. 单行注释
// 注释内容
2. 多行注释
/* 注释内容 */
1.3 变量
作用:给一个指定的内存空间起名,方便操作这段内存
语法:数据类型 变量名 = 初始值;
#include <iostream> using namespace std; int main() { //变量创建的语法:数据类型 变量名 = 变量初始值 int a = 10; cout << "a=" << a << endl; system("pause"); return 0; }
a=10 请按任意键继续. . .
1.4 常量:(1)#define 宏常量、(2)const修饰的变量
作用:用于记录程序中不可更改的数据
两种定义方法:
1. #define 宏常量
#define 常量名 常量值
- 一般定义在代码的上方,结尾不需要分号
#define Day 7 //意思就是Day以后就代表7
例:
#include <iostream> using namespace std; #define Day 7 // 定义在这里,主函数前面 int main() { //Day = 14; 错误,Day不可以修改 cout << "一周共有多少天:" <<Day<< endl; system("pause"); return 0; }
2. const修饰的变量
const 数据类型 常量名 = 常量值
- 通常在变量定义前加 const,修饰该变量为常量
注意:需要分号结尾
//const修饰的变量也称为常量 const int day = 7;
例
#include <iostream> using namespace std; int main() { const int day = 7; cout << "一周共有多少天:" << day << endl; system("pause"); return 0; }
一周共有多少天:7 请按任意键继续. . .
1.5 关键字
作用: C++中预先保留的单词(标识符)
注意:在定义变量或者常量时候,不要用关键字
错误示例:int不能作为变量名
int int = 10;
注意:在给变量或者常量起名称时候,不要用C++得关键字,否则会产生歧义
1.6 标识符命名规则
作用:C++规定给标识符(变量、常量)命名时,有一套自己的规则
- 1.标识符不能是关键字
int int =10; //错误示例
- 2.标识符只能有字母,数字,下划线组成
int abc = 10; int _abc = 20; int _123abc = 30;
- 3.第一个字符必须为字母或下划线,不能是数字
//int 123abc = 30; //错误
- 4.标识符字母区分大小写
int aaa = 40; int AAA = 50;
建议:给标识符命名时,争取做到见名知意的效果,方便自己和他人的阅读
第二章 数据类型
C++规定在创建一个变量或者常量时,必须要指定初相应的数据类型,否则无法给变量分配内存
2.1 整型:(1)short、(2)int、(3)long、(4)long long
作用:整形变量表示的是整数类型的数据
注意:
- 整型数据是按二进制数形式存储
- 在整型符号int和字符型符号char的前面,可以加修饰符signed(表示有符号)或unsigned(表示无符号)。如果指定signed,则数值以补码形式存放;如果指定为unsigned,则数值没有符号,全部二进制位都用来表示数值本身。
以下集中都能表示整型,区别在于所占用内存空间不同:
一般使用int即可
#include <iostream> using namespace std; int main() { //1.短整型(-32768~32767) short num1 = 32768; // 超出了范围 //2.整型 int num2 = 32768; //3.长整型 long num3 = 10; //4.长长整型 long long num4 = 10; cout << num1 << endl; cout << num2 << endl; cout << num3 << endl; cout << num4 << endl; system("pause"); return 0; }
-32768 32768 10 10 请按任意键继续. . .
2.2 sizeof关键字
作用:统计数据类型所占内存大小
语法:sizeof(数据类型/ 变量)
#include <iostream> using namespace std; int main() { //整型:short (2), int (4), long (4), long long (8) //可以利用sizeof求出数据类型占用内存大小 short num1 = 10; cout << "short占用的内存空间为:" << sizeof(short) << endl; cout << "short占用的内存空间为:" << sizeof(num1) << endl; int num2 = 10; cout << "int占用的内存空间为:" << sizeof(int) << endl; long num3 = 10; cout << "long占用的内存空间为:" << sizeof(long) << endl; long long num4 = 10; cout << "long long占用的内存空间为:" << sizeof(num4) << endl; system("pause"); return 0; }
short占用的内存空间为:2 short占用的内存空间为:2 int占用的内存空间为:4 long占用的内存空间为:4 long long占用的内存空间为:8 请按任意键继续. . .
2.3 实型(浮点型):(1)单精度float、(2)双精度double
作用: 用于表示小数
浮点型变量有两种:单精度float、双精度double
两者的区别在于表示的有效数字范围不同
1. 单精度float
默认情况下输出一个小数会显示6位有效数字
int main() { //默认情况下输出一个小数会显示6位有效数字 float f1 = 3.14f; //通常在float后面多加一个f cout << "f1=" << f1 << endl; float f2 = 3.1415926f; cout << "f2=" << f2 << endl; system("pause"); return 0; }
f1=3.14 f2=3.14159 请按任意键继续. . .
2. 双精度double
#include <iostream> using namespace std; int main() { double d1 = 3.14; cout << "d1=" << d1 << endl; double d2 = 3.1415926; cout << "d2=" << d2 << endl; system("pause"); return 0; }
d1=3.14 d2=3.14159 请按任意键继续. . .
例2:统计占用的内存空间
#include <iostream> using namespace std; int main() { //统计float和double占用的内存空间 cout << "float占用的内存空间为:" << sizeof(float) << endl; cout << "double占用的内存空间为:" << sizeof(double) << endl; system("pause"); return 0; }
float占用的内存空间为:4 double占用的内存空间为:8 请按任意键继续. . .
例3:科学计数法
#include <iostream> using namespace std; int main() { //科学计数法 float f2 = 3e2; //3*10^2 cout << "f2=" << f2 << endl; float f3 = 3e-2; //3*10^-2 cout << "f3=" << f3 << endl; system("pause"); return 0; }
f2=300 f3=0.03 请按任意键继续. . .
2.4 字符型
作用:可以表示单个字母的数据类型
语法:char ch = 'a';
注意1:单引号,不是双引号
char ch = 'a'; // char ch2 = "b" 双引号错误
注意2:单引号里面只能写一个字符,不能写字符串
// char ch2 = 'abcd' 单引号内只能有一个字符
- C和C++中字符型变量只占用1个字节
- 字符型变量并不是把字符本身放到内存中存储,而是将对应的ASCII码放入对应的存储单元
例1:
#include <iostream> using namespace std; int main() { cout << "char字符型变量所占用内存" << sizeof(char) << endl; system("pause"); return 0; }
char字符型变量所占用内存1 请按任意键继续. . .
例2:
比如a对应97,所以存储97
#include <iostream> using namespace std; int main() { //a - 97 //A - 65 //相差32 //(int)转化为了整型 char ch = 'a'; cout << (int)ch << endl; system("pause"); return 0; }
97 请按任意键继续. . .
2.5 转义字符
作用:用于表示一些不能显示出来的ASCII字符
现阶段我们常用的转义字符有: \n \\ \t
1. 换行符 \n
#include <iostream> using namespace std; int main() { cout << "hello\nworld"; system("pause"); return 0; }
hello world请按任意键继续. . .
2. 反斜杠 \ \
#include <iostream> using namespace std; int main() { cout << "hello\\world" << endl; system("pause"); return 0; }
hello\world 请按任意键继续. . .
3.水平制表符 \t
#include <iostream> using namespace std; int main() { //水平制表符 \t 作用:整齐的输出 cout << "aaa\thello" << endl; cout << "aa\thello" << endl; cout << "aaaa\thello" << endl; system("pause"); return 0; }
宽度一共八个,前面有n个a,后面就8-n个空格
aaa hello aa hello aaaa hello 请按任意键继续. . .
2.6 字符串型
作用:用于表示一串字符
两种风格:
1. C风格字符串
char 变量名[] = "字符串值";
#include <iostream> using namespace std; int main() { char str1[] = "abc"; cout << "str1=" << str1 << endl; system("pause"); return 0; }
str1=abc 请按任意键继续. . .
注意:C风格的字符串要用双引号括起来
2. C++风格字符串
string 变量名 = "字符串值";
注意:老版本可能需要包含string头文件
#include <iostream> using namespace std; #include <string> //2019不需要,老版本可能需要这个头文件 int main() { string str1 = "abc"; cout << "str1=" << str1 << endl; system("pause"); return 0; }
2.7 布尔类型 bool
作用:布尔值数据类型代表真或假的值
- true
- false
bool类型占1个字节
#include <iostream> using namespace std; int main() { bool flag = true; cout << flag << endl; cout << "bool类型所占用空间" << sizeof(flag) << endl; system("pause"); return 0; }
1 bool类型所占用空间1
2.8 数据的输入
作用:用于从键盘获取数据
关键字:cin
语法:cin >> 变量
例1:整型赋值
#include <iostream> using namespace std; int main() { int a = 0; // 初始化 cout << "请给整形变量a赋值:" << endl; cin >> a; cout << "赋值后a为:" << a << endl; system("pause"); return 0; }
请给整形变量a赋值: 12 赋值后a为:12 请按任意键继续. . .
例2:浮点型赋值
#include <iostream> using namespace std; int main() { float f = 3.14f; cout << "请给浮点型f赋值:" << endl; cin >> f; cout << "赋值后f为:" << f << endl; system("pause"); return 0; }
请给浮点型f赋值: 3.1415 赋值后f为:3.1415 请按任意键继续. . .
例3:字符型
#include <iostream> using namespace std; int main() { char ch = 'a'; cout << "请给字符型ch赋值:" << endl; cin >> ch; cout << "赋值后ch为:" << ch << endl; system("pause"); return 0; }
请给字符型ch赋值: b 赋值后ch为:b 请按任意键继续. . .
例4:字符串型
#include <iostream> using namespace std; #include <string> int main() { char str1[] = "abc"; string str2 = "abc"; cout << "请给字符串str1,str2赋值:" << endl; cin >> str1; cin >> str2; cout << "赋值后str1为:" << str1 << endl; cout << "赋值后str2为:" << str2 << endl; system("pause"); return 0; }
请给字符串str1,str2赋值: abcd abcde 赋值后str1为:abcd 赋值后str2为:abcde 请按任意键继续. . .
例5:bool类型
除了0代表假,其他都为真
#include <iostream> using namespace std; #include <string> int main() { bool flag = false; cout << "请给bool类型flag赋值:" << endl; cin >> flag; cout << "赋值后:" << flag << endl; system("pause"); return 0; }
请给bool类型flag赋值: 2020 赋值后:1 请按任意键继续. . .
请给bool类型flag赋值: 3.14 赋值后:1 请按任意键继续. . .