c++学习笔记

这篇博客详细介绍了C++的基础知识,包括编译过程、代码规范、变量和数据类型、选择结构表达式、循环语句、函数应用以及数组和指针的概念。特别强调了变量命名规则、数据类型的大小、循环结构的使用以及函数模板和动态存储方式的理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

hello,world!

编译过程

1.编译(预处理>编译>目标文件)
△形成目标代码/文件、目标代码是编译器的输出结果,常见:.o .obj
预处理 g++ -o hello.ii hello.cpp
预处理转成汇编文件 g++ -o hello.s -S hello.ii
汇编文件链接目标文件 g++ -o hello.o -c hello.s
目标文件链接函数库 g++ -o hello.exe hello.o
2.连接
△将目标代码跟c++的函数库连接,并将源程序所用的库代码与目标文件链接
△形成最终可执行的二进制机器代码
3.执行
△在特定的机器环境下运行c++应用程序

代码规范

△每个语句独一行
△花括号独一行
△相对花括号进行缩进
△书写注释:单行注释以//开头
多行注释以/开头,/结尾

变量和数据类型

ASC II 码表

在这里插入图片描述

内存

主存(寄存器)和RAM区别:

8bit比特=1byte字节(即0、1)
宽带10M b(bit)p(per)s(second)

变量-特定的内存空间:
一个数据存储空间的表示
通过变量名简单快速找到内存中的存储数据

变量命名规则(关注首字母和其他字母):
1.首字母:只能 下划线_或字母
2.其他字母:_ 字母 数字
3.不能关键字/保留字

数据类型

在这里插入图片描述
常见数据类型:
long int=int-32bit = 4byte
INT_MAX 最大值
short int-16byte
long long-64byte
char-8byte
string=24byte
float-32byte 6-7位有效数字
double-64byte 15位有效数字

声明和使用变量

在这里插入图片描述
在这里插入图片描述
typedef声明–为一个已有的类型取新的名字
typedeftype newname
在这里插入图片描述
头文件cmath–pow(radium,2) 定义谁的几次方
const定义了float一个类型的常量
在这里插入图片描述
头文件iomanip–setprecision
控制cout的显示精度
1.强制以小数方式显示 cout << fixed;
2.控制显示的精度 cout << setprecision(2)
3.控制宽度()只负责后边一个 cout << setw(8)在这里插入图片描述
输出double类型数据
在这里插入图片描述

选择结构表达式

转义序列小结

在这里插入图片描述

使用字符型变量

char
最大值 CHAR_MAX
最小值 CHAR_MIN
有符号signed char 取值范围 -128 - 127
无符号 usigned char 取值范围 0 - 255
char是否有符号取决于编译器在这里插入图片描述
控制宽度 set() 只负责后一个
控制左右 cout << left/right;
填充 setfill(‘ ’)

取模 % —余数

表达式和条件结构

单等号 = :赋值
组合:num += 90 <==> num = num + 90 同 ±*/%
引入bool类型 cout << boolalpha; 后打印结果从0 1 变为true false

逻辑运算符:
与 &&
或 ||
非 !

位运算符 换二进制运算
& 按位与
| 按位或
~ 按位非 换八位二进制取反加1
^ 按位异或 同假异真
<< 左移 右侧空位补0

右移

sizeof-用来测量数据类型的长度
基本用法 sizeof(type_name)

运算符优先级:
! ~ ++ – sizeof
!
算数运算符
关系运算符
&&
||
赋值运算符
三元运算符:int num = 5 > 6 ? 10 : 12;
? : 5大于6吗?是取10 否取12

条件结构:
在这里插入图片描述

循环语句

调试

在这里插入图片描述

多重if结构

常用来用作区间判断:
在这里插入图片描述

开关语句 switch

情况 case
跳出、退出 break
默认 default在这里插入图片描述

循环while

在这里插入图片描述
退出函数exit(报错码) – 头文件
在这里插入图片描述
随机数字 randNum 头文件 –
更新随机种子 srand(time(NULL)) 头文件 –
函数time – 头文件
五到十五之间的随机数:
5 + 10 * rand()/(RAND_MAX+1)

do-while循环

在这里插入图片描述

for循环

在这里插入图片描述
表达式1 通常为循环变量赋初值,可省略
如:i = 0 或 cnt = 20 或 count >=5
表达式2 循环条件,是否继续执行循环,可省略
如:i < 10 或 cnt == 20 或 count >=5
表达式3 更新循环变量的值,可省略
如:i++ 或 cnt += 2 或 count–
分号用来分隔三个表达式
不可省略!For(;;)是死循环
常量 const
在这里插入图片描述

双循环

外层循环控制行(行数、换行)
内层循环控制列(列数、列的图形)
在这里插入图片描述
从0开始数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

利用函数实现指定的功能

定义

形式参数:在定义函数是函数名后面括号中的变量名称
实际参数:在主调函数中调用一个函数时,函数名后面括号中的参数

外部声明作用域是整个文件

局部变量:一个函数内部定义的变量是内部变量,只在本函数范围内有效。
全局变量:在函数内定义的变量是局部变量,在函数之外定义的变量是外部变量 即全局变量。
变量的有效范围称为变量的作用域。文件作用域(全局变量)、函数作用域、块作用域、函数原型作用域。
函数的声明是函数的原型,而函数的定义是函数功能的确立。

函数重载

对一个函数名重新赋予它新的含义,是一个函数名可以多用
在这里插入图片描述
程序分析:用一个函数名max分别定义了三个函数。系统会根据调用函数时给出的信息去找与之匹配的函数。上述三个max函数的函数体是相同的,函数重载不要求函数体相同。参数类型和参数个数都可以不同。

函数模板

建立一个通用函数,其类型数据和形参类型不具体指定,用一个虚拟的类型来代表。
在这里插入图片描述

变量的存储方式

静态存储方式:在程序运行期间,系统对变量分配固定的存储空间。
动态存储方式:在程序运行期间,系统对变量动态地分配存储空间。

全局变量全部存放在静态存储区中,在程序开始执行时给全局变量分配存储单元,程序执行完毕就释放这些空间。程序执行过程中它们占据固定的存储单元,而不是动态地进行分配和释放。

动态存储区中存放:1)函数形式参数。在调用函数时给形参分配存储空间
2)函数中定义的变量(未加static声明的局部变量)。
3)函数调用时的现场保护和返回地址等。

存储类别

自动变量

用static声明静态局部变量
在函数调用结束后不消失而保持原值,占用的存储单元不释放,在下次调用时保持原值。

用register声明寄存器变量
变量的值直接存到寄存器中,大大提高效率。

用extern声明外部变量
从声明位置起。可供其他文件调用。

用static声明静态外部

数组及常用算法

数组基础篇

数据类型
数组中的所有元素必须属于想相同的数据类型
在这里插入图片描述
1.string
2.整形 ‘c’ = 99
3.double
4.整形 c/c++中不存在真正的bool类型在这里插入图片描述
求数组中最大值和最小值
在这里插入图片描述
求出奇数和偶数的个数
在这里插入图片描述
查找输入的数字在数组中的下标,没有则下标为-1
在这里插入图片描述

数组排序方法

冒泡排序
第一轮比较的次数:数组的长度-1
下一轮比上一轮比较的次数少一次
外层循环控制比较的轮数
内层循环控制每轮的比较和交换
在这里插入图片描述
选择排序
在这里插入图片描述
在这里插入图片描述
数组元素的插入
插入以后,保证数字是有序的:
1、把新数字放在数组的末尾(耗费内存),重新进行排序;
2、找到第一个比插入的数字小的位置insetIndex,
从最后一个元素开始,将数字复制到后面一个元素中,
将要插入的数字数值给下标为insertIndex的元素,
将数组的总长度+1。
在这里插入图片描述
数组元素的删除
1.找到要删除的元素下标
2.从找到的下标开始,后面的元素赋值给前面一个元素
3.总长度-1
在这里插入图片描述

初始二维数组

二维数组:学生多门学科成绩
玩家的被曝数据
游戏角色行走动画
语法:datatype name[row(行)Size][col(列)Size]
double score[5][3]
int animate[4][4]
二维数组动态赋值
在这里插入图片描述

数组的替代品

向量容器vector
是一个快速的动态分配内存的数组、
动态数组,可以在运行阶段设置长度;
具有数组的快速索引方式;
可以插入和删除元素。
定义和初始化:vectorvec1;
vectorvec2(5); 默认分配五个空间
Vectorvec3(20,998);默认二十个元素,每个元素都是998
在这里插入图片描述
在这里插入图片描述
算法头文件 - #include - sort函数
在这里插入图片描述

指针与内存机制

初识指针

指针(pointer)简介:指针是一个值为内存地址的变量
CPU访问内存(地址)
地址由操作系统决定、随机。
指针间接获取数据、变量名直接获取。
通过取地址方法来赋值。
在这里插入图片描述

报错

error: in C++98 ‘vecDouble’ must be initialized by constructor, not by ‘{…}’
vector vecDouble = {98.5, 67.9, 43.6, 32.9};
编译时:g++ -std=c++11

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值