<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path> </svg>
讯享网
1.1.1创建第一个c++程序
使用visiostudio创建第一个c++程序,这里不做安装描述,可参考其它文章。
- 创建项目
- 创建文件
- 编写代码
- 运行程序
讯享网
添加后如下所示:

讯享网
1.1.2 注释
C++ 支持单行注释和多行注释。注释中的所有字符会被 C++ 编译器忽略
1.1.3 变量
变量就是一个代号,程序运行时系统会自动为变量分配内存空间,于是变量就代表了 系统分配的那片内存空间。对变量的访问,就是对其代表的内存空间的访问。
int类型变量的长度通常是4个字节,double类型变量的长度通常是8个字节。其余可以在网上查询。
1.1.4 常量
区别:
编译器处理方式
define宏是在预处理阶段展开的,而const常量是在编译运行阶段使用的。因此,define的处理时间早于const。
类型和安全检查
define宏没有类型,不做任何类型检查,仅仅是替换。
const常量有具体的类型,在编译阶段会执行类型检查。因此,const可以提供类型安全保障。
存储方式
define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存。
const常量会在内存中分配,可以是堆中也可以是栈中。const定义的只读变量在程序运行过程中只有一份拷贝,而#define定义的宏常量在内存中有若干个拷贝。因此,const可以节省空间,提高执行效率,避免不必要的内存分配。
使用场景和效果
define宏适用于需要大量替换的场景,例如定义宏函数、宏变量等。
const常量适用于需要类型安全和内存管理的场景,例如定义全局常量、类成员变量等。const可以提供更好的类型检查和内存管理。
1.1.5关键字
在C++中,关键字是用于特定目的的预定义保留的标识符。C++有几个关键字,包括auto、break、case、char、class、const、continue、default、do、double、else、enum、explicit、export、extern、false、float、for、friend、goto、if、inline、int、long、mutable、namespace、new、noexcept、nullptr、operator、private、protected、public、register、reinterpret_cast、return、short、signed、sizeof、static、static_assert、static_cast、struct、switch、template、this、thread_local、throw、true、try、typedef、typeid、typename、union、unsigned、using、virtual、void、volatile、wchart、while和constexpr。
关键字不能用作变量名、函数名或任何其他标识符名称。
1.1.6标识符命名规则
在C++中,标识符(Identifier)是用户自定义的名字,用于程序中的变量、函数、类等命名。C++的标识符命名规则如下:
- 标识符必须以字母或下划线()开头。
- 标识符可以包含字母、数字或下划线。
- 标识符不能包含任何特殊字符或空格,并且不能以数字开头。
- 标识符区分大小写,即大写字母和小写字母被认为是不同的字符。
- 不能使用C++的关键字作为标识符。
数据类型存在的意义:给变量分配合适的内存空间。
C++规定在创建一个变量或者常量时,必须要指定出相应的数据类型,否则无法给变量分配内存。
注:字、字节、位之间的关系可以总结如下:
位(bit):位是计算机内部数据储存的最小单位,每一个位存储一个1位的二进制码,即0或1。位是计算机数据存储的基本单位。
字节(Byte):一个字节由8个相邻的二进制位组成。字节是计算机技术中最小的可操作存储单位,也是计算机信息中用于描述存储容量和传输容量的一种计量单位。国际电工委员会(IEC)和电气与电子工程师协会(IEEE)将字节的单位符号指定为大写字母B。
换算关系:1字节 = 8位。
字(word):字通常为16、32或64个位组成,也即2、4或8个字节。字的长度(字长)因计算机系统的不同而有所差异。
换算关系:1字 = 2字节(针对16位字长),1字 = 4字节(针对32位字长),1字 = 8字节(针对64位字长);同时,由于1字节 = 8位,因此1字也分别等于16位、32位或64位。
1.2.1如何获取数据类型长度?
sizeof关键字可以统计数据类型所占内存大小,单位字节。
讯享网
1.2.3 字符型说明
注意1:在显示字符型变量时,用单引号将字符括起来,不要用双引号
注意2:单引号内只能有一个字符,不可以是字符串
- C和C++中字符型变量只占用1个字节
- 字符型变量并不是把字符本身放到内存中存储,而是将对应的ASCII编码放入到存储单元==
ASCII 码大致由以下两部分组成:
- ASCII 非打印控制字符: ASCII 表上的数字 0-31 分配给了控制字符,用于控制像打印机等一些外围设备。
- ASCII 打印字符:数字 32-126 分配给了能在键盘上找到的字符,当查看或打印文档时就会出现。
转义字符:
表示一些不能显示出来的ASCII字符
: 换行符 (LF),将当前位置移到下一行开头
: 水平制表符 (HT),在当前位置插入一个制表符
: 反斜杠本身
" : 双引号
’ : 单引号
0 : 空字符 (NULL),字符串的终结符
ddd : 1到3位的八进制数所代表的字符,其中ddd是八进制数
xhh : 1到2位的十六进制数所代表的字符,其中hh是十六进制数
C/C++支持最基本的三种程序运行结构:顺序结构、选择结构、循环结构
- 顺序结构:程序按顺序执行,不发生跳转
- 选择结构:依据条件是否满足,有选择的执行相应功能
- 循环结构:依据条件是否满足,循环多次执行某段代码
1.4.1选择结构
if语句
讯享网
讯享网
switch语句
switch(表达式)
讯享网
1.4.2循环结构
- while循环语句

- do…while循环语句
讯享网
- for循环语句
1.4.3跳转语句
break语句
作用: 用于跳出选择结构或者循环结构
break使用的时机:
- 出现在switch条件语句中,作用是终止case并跳出switch
- 出现在循环语句中,作用是跳出当前的循环语句
- 出现在嵌套循环中,跳出最近的内层循环语句
continue语句
作用在循环语句中,跳过本次循环中余下尚未执行的语句,继续执行下一次循环
注:continue并没有使整个循环终止,而break会跳出循环
goto语句
作用在循环语句中,跳过本次循环中余下尚未执行的语句,继续执行下一次循环
1.5.1一维数组
一维数组定义的三种方式:
讯享网
1.5.2二维数组
二维数组定义的四种方式:
作用:将一段经常使用的代码封装起来,减少重复代码
一个较大的程序,一般分为若干个程序块,每个模块实现特定的功能。
语法:
下面展示一些 。
讯享网
指针存在的意义
高效管理内存、提供灵活的数据结构操作。
1.动态内存管理:指针允许程序在运行时动态地分配和释放内存,这对于处理大小未知的数据(如数组、链表等)非常重要。通过new和delete,程序可以根据需求申请和释放内存,有效利用系统资源。
2.实现一些高效的数据结构:指针是实现复杂数据结构(如链表、树、图等)的基础。它们允许数据元素之间通过地址直接连接,从而实现灵活的插入和删除操作,这些操作在数组中通常较为低效。
3.访问和修改数据:指针使得可以直接访问内存中的数据,通过指针可以方便地读取和修改数据,特别是在处理结构体和类的成员时。
4.资源管理:指针提供了对系统资源(如文件、网络连接等)的灵活管理。通过指针,可以实现对资源的共享和引用计数,帮助避免资源泄漏。
指针机制
- 每个变量在内存中都有一个唯一的地址。指针存储的是这个地址,而不是变量的值。这使得指针能够直接访问和操作内存中的数据。指针的类型决定了指针所指向的数据的类型。在C++中,指针类型与所指向的变量类型匹配,以便正确地进行内存访问和操作。例如,int*指针表示它指向一个整型变量,编译器能够根据类型信息进行适当的解引用。
- new关键字,可以在堆内存中动态分配内存。分配的内存地址通过指针返回,程序可以利用这个指针来访问和修改这块内存。通过delete关键字,可以释放这块内存,避免内存泄漏。
- 指针支持算术运算,例如自增和自减。指针存储的是地址,增加或减少指针的值会移动到下一个或前一个相同类型的数据位置。这在处理数组时特别有用。
1.7.1指针的定义和基本操作
指针的定义使用*符号,表示指针类型。你可以通过&运算符获取变量的地址。
int*的作用是声明一个指向整型(int)的指针,p是指针变量,&是取地址符.
通过指针,可以访问和修改指针指向的值。使用*运算符可以解引用指针,从而访问它所指向的变量。
int p中的号用于声明一个指针类型,p = 20中的号是解引用操作,用来解引用指针,获取指针所指向地址的内容。
所有指针类型在32位操作系统下是4个字节。在64位操作系统下,是8个字节。
1.7.2动态内存分配
指针常用于动态内存分配,通过new关键字申请内存,使用delete释放内存。
讯享网
1.7.3指针与函数
指针可以作为函数参数,允许函数修改外部变量的值。这被称为“按引用传递”。
1.7.4指针数组和数组指针
指针数组是一个数组,其每个元素都是指针;而数组指针是指向数组的指针。
数组指针是一个指向整个数组的指针。数组指针与指针数组的不同在于它是指向数组本身,而不是数组中的每个元素。
讯享网
1.7.5指向指针的指针(二级指针)
定义指向指针的指针,这在多级指针操作中很有用。
- 一级指针:是一个指针变量,指向一个普通变量,并保存该普通变量的地址;
- 二级指针:是一个指针变量,指向一个一级指针,并保存该一级指针的地址;
1.7.6空指针和野指针
空指针:指针变量指向内存中编号为0的空间(初始化指针变量),空指针指向的内存是不可以访问的。
野指针:指针变量指向非法的内存空间
讯享网
const修饰指针有三种情况
- const修饰指针 — 常量指针
const修饰的是指针,指针指向可以改,指针指向的值不可以更改 - const修饰常量 — 指针常量
const修饰的是常量,指针指向不可以改,指针指向的值可以更改 - const即修饰指针,又修饰常量
结构体属于用户自定义的数据类型,允许用户存储不同的数据类型
语法:struct 结构体名 { 结构体成员列表 };
- struct 结构体名 变量名
- struct 结构体名 变量名 = { 成员1值 , 成员2值…}
- 定义结构体时顺便创建变量
//结构体定义
struct student
{
//成员列表
string name; //姓名
int age; //年龄
int score; //分数
}stu3; //结构体变量创建方式3
结构体数组
语法:struct 结构体名 数组名[元素个数] = { {} , {} , … {} }
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/154614.html