文章目录
-
- C++基础入门
-
- 1 C++初识
-
- 1.1 第一个C++程序
- 1.2 注释
- 1.3 变量
- 1.4 常量
- 1.5 关键字
- 1.6 标识符命名规定
- 2、数据类型
-
- 2.1 整型
- 2.2 sizeof关键字
- 2.3 实型(浮点型)
- 2.4 字符型
- 2.5 转义字符
- 2.6 字符串型
- 2.7 布尔类型bool
- 2.8 数据的输入
- 3、运算符
-
- 3.1 算术运算符
- 3.2 赋值运算符
- 3.3 比拟运算符
- 4 程序流程结构
-
- 4.1 选用结构
-
- 4.1.1 if语句
- 4.1.2 三目运算符
- 4.1.3 switch语句
- 4.2 循环结构
-
- 4.2.1 while循环语句
- 4.2.2 do...while循环语句
- 4.2.3 for循环语句
- 4.2.4 嵌套循环
- 4.3 跳转语句
-
- 4.3.1 break语句
- 4.3.2 continue语句
- 4.3.3 goto语句
- 5.数组
-
- 5.1 概述
- 5.2 一维数组
-
- 5.2.2一维数组数组名
- 5.3 二维数组
- 6 函数
-
- 6.1 概述
- 6.2 函数的定义
- 6.3 值传递
- 6.5 函数的经常出现方式
- 6.6 函数的申明
- 6.7 函数的分文件编写
- 7 指针
-
- 7.1 指针的基本概念
- 7.2 指针变量的定义和经常使用
- 7.3 指针所占用内存空间
- 7.4 空指针和野指针
- 7.5 const润色指针
- 7.6 指针和数组
- 7.7 指针和函数
- 7.8 案例:应用冒泡升序排序
- 8 结构体
-
- 8.1 结构体基本概念
- 8.2 结构体的定义和经常使用
-
- 8.3 结构体数组
- 8.4 结构体指针
- 8.5 结构体嵌套结构体
- 8.6 结构体做函数参数
- 8.7 结构体中const经常使用场景
C++基础入门
1 C++初识
1.1 第一个C++程序
include<iostream> using namespace std int incout "hello world" endlsystem"pause"return 01.2 注释
-
单行注释://
-
多行注释:/ |/
1.3 变量
数据类型 变量名 = 变量初始值;
1.4 常量
(1) 影响:记载程序中无法更改的数据
(2)定义常量的两种方式:
- #define 宏常量:#define 常量名 常量值( 学说定义在文件上方,一旦修正就会报错)
- const润色的变量:const 数据类型 常量名=常量值( 学说在变量定义前加关键字const)
1.5 关键字
double\int\long\1.6 标识符命名规定
(1)标识符不能是关键字
(2)标识符只能由字母、数字、下划线
(3)第一个字符必定是字符或许下划线
(4)标识符中辨别 大致写
2、数据类型
2.1 整型
区别:在于所占内存空间不同
//短整型(-32768~32767)short num1 32769//输入就 一个正数-32768//整型int num2 10//长整型long num3 10//长长整型long long num4 10cout "num1= " num1 endlcout "num2= " num2 endlcout "num3= " num3 endlcout "num4= " num4 endl2.2 sizeof关键字
影响:应用sizeof关键字统计数据类型所占内存 大致
b sizeofa2.3 实型(浮点型)
影响:示意小数
两种示意方式:
- 1、单精度: float;占用空间:4字节;有效数字范围:7位有效数字
- 2、双精度:double;占用空间:8字节;有效数字范围:15~16位有效数字
2.4 字符型
影响:显示单个字符,只占用1个字节
语法:char ch=‘a’;
//1、字符型变量创立方式char ch 'a'cout ch endl//2、字符型变量所占内存空间 大致cout "char字符型所占内存:" sizeofch endl//3、字符型变量对应的ASCII编码cout intch endl2.5 转义字符
影响:示意一些不能显示进去的ASCII字符
- \n:换行
- \t:水平制表:\t占用8个字符,如aaa+5个空格;aaaa+4个空格
- \ \:代表反斜线字符“\”
2.6 字符串型
两种方式:
- C:char 变量名[ ]=“字符串值”
- C++:string 变量名= “字符串值”
2.7 布尔类型bool
影响:代表真和假的值
bool类型只要两个值,占1个字节 大致
- true:真(实质是1)//非0的值都代表着真
- false:假(实质是0)
2.8 数据的输入
关键字:cin>>变量,从键盘上失掉数据
cout "请输入a的值:" endl cin a3、运算符
3.1 算术运算符
留意:
- 两数相除,除数无法以为0
- 两个小数无法以启动取模运算
3.2 赋值运算符
3.3 比拟运算符
4 程序流程结构
- 顺序结构:程序依照顺序口头,不出现跳转
- 选用结构:依据条件能否满足,有选用的口头相应的配置
- 循环结构:依据条件能否满足,循环屡次口头某段代码
4.1 选用结构
4.1.1 if语句
include<iostream> using namespace std int insystem"color 5F"cout "请输入一个分数:" endlint scorecin score//留意:if条件前面不要加分号if score 600printf"你考上一本大学\n"else ifscore500printf"你考上了二本\n"elseprintf"你 何都没有考上,二战吧\n"return 0嵌套的if语句:
案例需求:假设上述大于600考上了一本大学,假设分数大于650就可以考上双一流
if score 600printf"你考上一本大学\n"if score 650printf"可以上双一流了\n"else if score 500printf"你考上了二本\n"elseprintf"你 何都没有考上,二战吧\n"4.1.2 三目运算符
int a 10int b 20int c 0c a b a bcout "c= " c endl//C++中三目运算符前往的是变量,可以继续赋值a b a b 66cout "a= " a endlcout "b= " b endl4.1.3 switch语句
语法:
switch表白式case 结局1:口头语句;break;case 结局2:口头语句;breakdefault口头语句;break示例:给电影打分
cout "请给电影打分:" endlint score 0cin scoreswitch scorecase 3 cout "你打的电影评分是:" score endl breakcase 6 cout "你打的电影评分是:" score endl breakcase 9 cout "你打的电影评分是:" score endl breakcase 4 cout "你打的电影评分是:" score endl breakdefaultcout "你打的是其余分数:" score endl break4.2 循环结构
4.2.1 while循环语句
语法:while(循环条件){循环语句}
留意:了解循环条件,防止死循环
//在屏幕打印0-9int num 0while num 10cout num endlnum4.2.2 do…while循环语句
语法:do{循环语句}while{循环条件}与while的区别是先口头一次性循环语句,再判别循环条件
int num 0 docout num endlnumwhile num 104.2.3 for循环语句
语法:for(起始表白式;条件表白式;末尾循环体){ 循环语句;}
//在屏幕打印0-9 for int i 0 i 10 icout i endl4.2.4 嵌套循环
影响:循环中再加一层循环
//在屏幕打印10x10的*阵for int i 0 i 10 ifor int j 0 j 10 jcout cout endl示例:打印乘法口诀表
include<iostream> using namespace std int insystem"color 5F"for int i 1 i 10 ifor int j 1 j i jcout j " x " i ijcout endlreturn 04.3 跳转语句
4.3.1 break语句
影响:完结循环
//在屏幕打印10x5的*阵for int i 0 i 10 ifor int j 0 j 10 jifj5breakcout cout endl4.3.2 continue语句
影响:在循环语句中,跳过本次循环中余下尚未口头的语句,继续口头下一次性循环
//在屏幕输入10以内偶数for int i 0 i 10 iif i 2 0continuecout i endl4.3.3 goto语句
影响:goto标志之后,跳转到标志的语句
include<iostream> using namespace std int insystem"color 5F"//口头goto语句cout "1.xxxxx" endlgoto Flagcout "2.xxxxx" endlcout "3.xxxxx" endlcout "4.xxxxx" endlFlagcout "5.xxxxx" endlreturn 05.数组
5.1 概述
5.2 一维数组
1、定义方式
- 数据类型 数组名[数组长度];
- 数据类型 数据名[数组长度]={值1,值2…};
- 数据类型 数组名[ ]={值1,值2…};
2、数组特点
放在一块延续的内存空间,数组中每个元素都是相反的数据类型。
int insystem"color 5F"//1、数据类型 数组名[数组长度];int arr5arr0 10arr1 20arr2 30arr3 40arr4 50for int i 0 i 5 icout arri cout endl//2、数据类型 数据名[数组长度]={值1,值2.....};//若初始化没有五个数据,剩下的将会由0填补int arr15 10203040for int i 0 i 5 icout arr1i cout endl//3、数据类型 数组名[ ]={值1,值2.....};int arr3 12345 6589for int i 0 i 9 icout arr3i cout endlreturn 05.2.2一维数组数组名
用途:
- 统计整个数组在内存中的长度
- 可以失掉数组在内存中的首地址
练习案例:数组元素逆置
请申明一个5个元素的数组, 并且将元素逆置
#include<iostream> using namespace std; int in() {system("color 5F");int arr[5] = { 1,2,3,4,5 };//1、数组逆置前序列cout << "数组逆置前序列:" << endl;for (int i = 0; i < 5; i++){cout << arr[i] << " ";}cout << endl;//2、成功逆置int start = 0;int end = sizeof(arr) / sizeof(arr[0])-1;while (start < end){int temp = arr[start];arr[start] = arr[end];arr[end] = temp;start++;end--;}cout << "数组逆置之后输入:" << endl;for (int i = 0; i < 5; i++){cout << arr[i] << " ";}cout << endl;return 0; }5.3 二维数组
1、二维数组的四种定义类型:
- 数据类型 数组名[行数] [列数];
- 数据类型 数组名[行数] [列数]={{数据1,数据2},{数据3,数据4}};
- 数据类型 数组名[行数] [列数]={数据1,数据2,数据3,数据4};
- 数据类型 数组名[ ] [列数]={数据1,数据2,数据3,数据4};
2、二维数组数组名
int arr23123456//1、检查占用内存空间 大致cout "二维数组占用内存空间为:" sizeofarr endlcout "二维数组第一行占用的内存:" sizeofarr0 endlcout "二维数组第一元素占用的内存:" sizeofarr00 endlcout "二维数组的行数为:" sizeofarr sizeofarr0 endlcout "二维数组的列数为:" sizeofarr0 sizeofarr00 endl//2、检查二维数组的首地址cout " 二维数组首地址: " intarr endlcout " 二维数组第一行元素首地址: " intarr0 endlcout " 二维数组第二行元素首地址: " intarr1 endl6 函数
6.1 概述
6.2 函数的定义
步骤:
- 1、前往值类型
- 2、函数名
- 3、参数列表
- 4、函数体语句
- 5、return表白式
6.3 值传递
- 值传递就是函数调用时实参将数值传给形参
- 值传递:假设形参出现,并不影响实参
6.5 函数的经常出现方式
- 1、无参无返
- 2、有参无返
- 3、无参有返
- 4、有参有返
6.6 函数的申明
影响:提早通知编译器函数的存在,申明可以写屡次,定义只能写一次性。申明是说明存在这个函数,定义是说明这个函数 如何写。
6.7 函数的分文件编写
影响:让代码结构愈加明晰
步骤:
- 1、创立后缀名为.h的头文件
- 2、创立后缀名为.cpp的源文件
- 3、在头文件中写函数的申明
- 4、在源文件中写函数的定义
7 指针
7.1 指针的基本概念
影响:可以经过指针直接访问内存
- 内存编号从0开局记载,普通用十六进制数字示意
- 可以应用指针变量保管地址
7.2 指针变量的定义和经常使用
指针定义语法: 数据类型 * 变量名;
include<iostream> using namespace std int insystem"color 5E"//1、定义指针int a 10//指针定义的语法:数据类型 * 指针变量名int p//让指针记载变量a的地址p acout "a的地址为:" p endl//2、经常使用指针//可以经过解援用的方式来找到指针指向的内存//指针前加*代表解援用,找到指针指向的内存中的数据cout "a的值是:" p endlif a pcout "一样" endlelsecout "不一样" endlreturn 07.3 指针所占用内存空间
问: 指针也是种数据类型,那么占用 几许内存呢?
答: 在32位操作 体系下:占4个字节空间;在 为操作 体系:占8个字节
include<iostream> using namespace std int insystem"color 5E"int a 10int pp acout "sizeof(int *)=" sizeofint endlcout "sizeof(double *)=" sizeofdouble endlcout "sizeof(char *)=" sizeofchar endlcout "sizeof(float *)=" sizeoffloat endlreturn 07.4 空指针和野指针
(1)空指针:指针变量指向内存中编号为0的空间
用途:初始化指针变量
留意:空指针指向的内存是无法以访问的
(2)野指针:指针变量指向合法的内存空间
7.5 const润色指针
const润色指针有三种状况:
-
(1)const润色指针:常量指针
const int pa -
(2)const润色常量:指针常量
int const pa -
(3)const即润色指针又润色常量
const int const pa
7.6 指针和数组
影响:应用指针访问数组元素
int arr10 123456789 int p arr//arr就是数组的首地址cout "应用指针指向第一个元素:" p endlp//指针偏移4个字节cout "应用指针指向第二个元素:" p endlforint i2i10icout p p7.7 指针和函数
影响:应用指针作为函数参数,可以修正实参的值
include<iostream> using namespace std void swapint p1 int p2int temp p1p1 p2p2 tempcout "swap *p1=" p1 endlcout "swap *p2=" p2 endlint insystem"color 5E"//地址传递int a 10int b 20cout "a= " a endlcout "b= " b endlswapa bcout endl "替换后的a,b的值:" endlcout "a= " a endlcout "b= " b endlreturn 07.8 案例:应用冒泡升序排序
序列:int arr[10] = { 4,2,3,6,1,8,7,9,5,1 };
include<iostream> using namespace std void bubbleSortint arr int lenfor int i 0 i len ifor int j 0 j leni1 jif arrj arrj 1int temp arrjarrj arrj 1arrj 1 tempint in//system("color 1E");//创立一个数组int arr 4236158791 //求数组的长度int len sizeofarr sizeofarr0//排序前的序列cout "排序前的序列:" endlfor int i 0 i len icout arri cout endl//应用冒泡排序bubbleSortarr lencout "排序后的序列:" endlfor int i 0 i len icout arri cout endlreturn 08 结构体
8.1 结构体基本概念
结构体属于用户 自定义的数据类型 ,准许用户存储不同的数据类型。
8.2 结构体的定义和经常使用
语法:struct 结构体名 {结构体成员列表};
结构体创立的方式三种:
- (1)struct 结构体名 变量名
- (2)struct 结构体名 变量名={成员1值,成员2值…}
- (3)定义结构体是顺便创立变量
留意:结构体定义的时刻不能省略struct,创立变量的时刻可以省略
8.3 结构体数组
影响:将自定义的结构体放入到数组中繁难保养
语法:struct 结构体名 数组名[元素个数]={{},{},{}…}
int insystem"color 5E"//创立结构体数组struct Student arr3 "张铁蛋"18100"徐铁住"2399"憨憨"2290arr2name "徐傻傻"forint i0i3icout "姓名:" arriname " 年龄:" arriage " 分数:" arriscore endlreturn 08.4 结构体指针
影响:经过指针访问结构体中的成员
- 应用操作符“->”可以经过结构体指针访问结构体属性
8.5 结构体嵌套结构体
影响:结构体的成员可以是另一个结构体
include<iostream> include<string> using namespace std //定义在校生结构体 struct studentint num//学号string nameint age//定义教员结构体 struct teacherint idstring nameint agestruct student stuint insystem"color 5E"//创立教员、在校生teacher ter 2311"王教员"35 20240505"张三"22 cout "教员的编号:" terid endlcout "教员的名字:" tername endlcout "教员的年龄:" terage endlcout "教员的在校生学号:" terstunum endlcout "教员的在校生的名字:" terstuname endlcout "教员的在校生的年龄:" terstuage endlreturn 08.6 结构体做函数参数
影响:将结构体作为参数向函数中传递
传递的方式:
- 值传递
- 地址传递
8.7 结构体中const经常使用场景
影响:用const来防止误操作
include<iostream> include<string> using namespace std //定义在校生结构体 struct studentstring nameint ageint score//将函数中的形参改为指针,可以缩小内存空间,而且不会 新的正本 void printStudentconst struct student s//s->age = 55;//参与const之后,一旦有修正的操作就会报错,防止误操作cout "姓名:" sname " 年龄:" sage " 分数:" sscore endlint insystem"color 5E"student s "张三"2399 //只读,无法修正printStudentsreturn 0