自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(60)
  • 收藏
  • 关注

原创 C++学习笔记系列2-48——回调函数

/ test2函数的参数列表中填入函数指针“func”,即:test2(func),也可以输出。// 我们取函数指针中存储的地址。// 我们取函数地址。cout << "test1函数" << endl;cout << "test2函数" << endl;// test1 将作为函数指针传入 test2函数中。// 函数指针方式调用。回调函数可以用于不同条件下输出不同结果。// 注意这里的参数。

2026-07-02 08:21:03 504

原创 C++学习笔记系列2-47——指向函数的指针

我们可以通过指针调用函数,实现一个强大的工具,即:回调函数。要求函数和函数指针在返回类型和参数在结构上完全一致;// 创建函数指针,注意这里的格式要和函数一致。函数储存在程序内存中的代码段中,// 将函数与指针建立联系。

2026-07-02 08:20:51 317

原创 C++学习笔记系列2-46——指针作为函数参数

而通过指针的形式,我们可以修改主函数中的变量值,注意这里不是说“修改实参”,这一点一定要重视。cout << "未调用函数时 A 的值为:" << A <<endl;cout << "未调用函数时 B 的值为:" << B <<endl;cout << "调用函数后 A 的值为:" << A <<endl;cout << "调用函数后 B 的值为:" << B <<endl;cout << "调用函数后:" << endl;调用函数后 A 的值为:20。输出:未调用函数时 A 的值为:10。

2026-07-01 07:50:34 371

原创 C++学习笔记系列2-45——指针作为函数参数

变量类型 变量名称(int i),这种形式是通过将实参进行拷贝,传给形参,然后再在函数中使用拷贝进来的值。这是初学函数时的最基本操作。本篇将介绍指针作为函数参数的形式。

2026-07-01 07:50:07 445

原创 C++学习笔记系列2-44——指针和二维数组(2)

其中“i < 6”,6 是二维数组的行列值的积,

2026-06-30 07:50:00 377

原创 C++学习笔记系列2-43——指针和二维数组(1)

这属于“按元素建立关系”。

2026-06-30 07:49:46 365

原创 C++学习笔记系列2-42——指针和一维数组(4)

cout << "p1、p2中存储的地址是一样的。cout<< "p1中的地址是:" << p1 <<endl;cout<< "p2中的地址是:" << p2 <<endl;// 越界了,输出一个不确定值。4、数组名是一个固定的地址,所以它不能做“自增减”操作;1、指针要和数组的变量类型保持一致才能建立联系;

2026-06-29 07:28:55 329

原创 C++学习笔记系列2-41——指针和一维数组(3)

指针、数组名对数组内元素进行了访问,但他们都存在一个相同的问题,就是没有限制,容易“越界”,使用 for循环进行操作就可以很好的解决这个问题。

2026-06-29 07:28:43 472

原创 C++学习笔记系列2-40——指针和一维数组(2)

/ 因此我们可以断定,数组名称,即:arr,就是一个地址,并且还是数组首个元素的地址。可以推断出 arr 这个数组名其实就是一个地址,用数组名称作为指针变量使用,将数组首个元素地址赋予指针。“数组名 + 索引号”

2026-06-28 07:59:43 525

原创 C++学习笔记系列2-39——指针和一维数组(1)

数组的底层原理,即:数组一旦被初始化后,它的各个元素的内存就被分配好了,并且地址是连续的。此时我们可以将 p2 指针 “置空”,在没有确切地址可以赋值时,将指针置空是一个安全操作。// nullptr 是空指针,将其赋值给 p2 让其为空。// 这个就会报错,因为类型不一致,指针获取到数组的起始位置,就可以通过指针的自增功能获取数组信息。这种方式和上方的作用是一样的,但是有些繁琐,不建议使用。这是最常用的方式,也是最方便的方式。这个方式比较简陋,而且容易“越界”,首先要保证数组和指针的类型是一致的。

2026-06-28 07:59:24 393

原创 C++学习笔记系列2-38——指针常识

如果我们按以下方式将 j 的地址赋值给 指针 p ,则编译器会报错。这是因为指针常量的特点,即可以改变存储的值,但不能改变指向。可以改变地址中存储的值,但是不能改变指向的指针形式。const 在 * 后前方即可。

2026-06-27 08:10:44 481

原创 C++学习笔记系列2-37——指针常识

/ 上面这个操作就是在改变地址中的值,这是不行的。这种指针可以改变指向,但不能改变地址中存储的值,只要 const 在 * 前方即可。

2026-06-27 08:10:31 356

原创 C++学习笔记系列2-36——指针常识

/ 这是一个混合使用,它们的解读方式是“从右向左”看,先通过“ & ”读取地址,即指针自身地址,再看“ * ”间接寻址运算符,提取该地址内的数据,指针是存储地址的变量,所以提取出的值也是地址,而且是变量 i 的地址。间接寻址运算符 “ * ”,和取址符号 “ & ”混合使用。因操作系统而异,64位:8字节,32位是:4字节。

2026-06-26 07:18:55 493

原创 C++学习笔记系列2-35——指针

可以看到为指针赋值时,用到取地址符号 “&”,因为指针是存储地址的变量。即:间接寻址运算符 “ * ”,和取址符号 “ & ”。这段内存的地址就可以赋值给指针。指针也是一种变量类型,

2026-06-26 07:18:34 386

原创 C++学习笔记系列2-34

t\n\"\'\\

2026-06-25 08:08:31 487

原创 C++学习笔记系列2-33

pos 表示从第几位索引号开始截取,len 表示截取多少个,这两个参数也可省略,如果省略 pos,则表示从头部开始截取,省略 len,则表示截取到结尾处,// 从索引号为:1 的位置截取str1,,截取数量没给,所以一直截取到结尾,应该为:ello。// 从索引号为:1 的位置截取str1,,截取数量是 3,应该为:ell。从索引号为:2 的位置截取str1,截取数量是 2,应该为:ll。substr(pos, len ) 函数,

2026-06-25 08:08:18 475

原创 C++学习笔记系列2-32

/ str2 和 str3 都是hey,但是 str2 是小写 “h”,str3 是大写 “H”,值分别为:104、72。str1 的第 3 位是 l ,str2 的第 3 位是 y,根据ASCⅡ表,l:108,y:121,str1 和 str2 的前两个字符都是一样的,根据定义一样就向后再看,直到找到不同为止。首个字符的ASCⅡ编码大小,ASCⅡ编码越大,该字符串的值就越大;,哪个字符的ASCⅡ值大,对应的字符串就大;并且还有大小写的区分。在字符相同的情况下,会一直对比下去,直到找到不同的字符。

2026-06-24 09:13:14 496

原创 C++学习笔记系列2-31

如果想输出这个值,可能是 “-1”,但是我们不必纠结它的值,一般情况下我们不会用这个值,而是将 string::npos 作为 if 语句的判断条件。字符串,或者字符的查找,可以使用 find( ) 和 rfind( ),前者是从左向右查,后者是从右向左查,方向相反。// str3 的内容 str1 中没有,因此会返回:npos。如果没有找到,则返回常量:string::npos。str2 的内容 str1 中有,因此会返回索引值。从前找,索引号为:4,从后找,索引号为:7,则是以“就近原则”执行,

2026-06-24 09:12:58 386

原创 C++学习笔记系列2-30

我们看到 append( ) 函数,需要使用str1通过 “.” 调用使用,参数列表中传入我们想追加的字符串变量名称,即:str2。我们使用上一篇的“+”进行 "_" 的拼接。将 str2 追加到 str1 上。append( )函数。append( ) 函数。

2026-06-23 07:19:33 314

原创 C++学习笔记系列2-29

但是需要注意的是字符串的拼接顺序,A、B 两个字符串,如果想将 B 拼接到 A,那么就要采用“A += B”,反之就是“B += A”。这是通过运算符进行拼接。// 将 world 通过 += 再次赋值给 str1。我们想合成一个“hello_world”这样一个新字符串,首先先为 str1 后面添加一个 “_”

2026-06-23 07:19:20 319

原创 C++学习笔记系列2-28

至于什么是“类”,我们在之后会讲解,这里知道string是字符串类就行。无论是size( ),还是length( ),输出的值都是实际字符数量,str1 的赋值内容为“HELLO”,即:5个字符,而 str2 则是空字符串,即:0个字符。C++标准库中的字符串是不需要编译器默认添加 “\0” 作为结尾的,这便是二者最基本的区别。C语言风格的字符串,它的主要特点是编译器会在字符结束处添加一个 \0 空字符作为结束。这是类对象调用类中成员函数的用法,我们之后的文章会频繁使用“ . ”,目前了解就好。

2026-06-22 07:06:59 435

原创 C++学习笔记系列2-27

因为C++编译器会在初始化数组时,自动把空字符 null 放到字符串的末尾处,空字符 null 在计算机中被表示为:\0。所以字符串的长度就变为了:6。本课我们先了解C语言风格的字符串,虽然在日常开发中使用不多,但是了解它的特性有助于之后的学习。cout << "str的长度为:" << length <<endl;这就是字符数组的特点,也是C语言风格字符串的特点。这就是C语言风格字符串的特点。

2026-06-22 07:06:47 324

原创 C++学习笔记系列2-26

二维数组的增、删基本和一维数组一样,也是采用“数据搬家”的方式,进行元素的增加或减少操作的,但是二维数组相对复杂,因为它需要匹配行、列数据,因此在日常开发中使用的不是很多,但是一旦要进行数组元素的增加或减少,一定要设定好新旧数组的行、列数值,否则会造成数据混乱。查找数组中一样的数据也是同一维数组,我们可以将我们需要的数据作为条件进行判断,如果二维数组中对应的行、列中的数据满足条件,则代表找到了和数据一样的值,不满足则循环完毕没有任何反馈。

2026-06-21 08:14:19 245

原创 C++学习笔记系列2-25

二维数组通常使用“ for循环 嵌套 for循环 ” 的方式进行数组的遍历,主要因为是二维数组有 2 个索引值,for循环中自带 1 个可以自增的变量,如果使用 2 个就可以很好的和二维数组的 2 个索引值进行匹配,整个流程中,索引号的变化,从左到右、从上到下,就是:0 0 | 0 1 | 0 2。如arr [ 2 ][ 0 ],则输出值为:7,即:2行,0列;arr [ 1 ][ 2 ],则输出值为:6,即:1行,2列;输入索引号为:arr [ 0 ][ 0 ],则输出值为:1。

2026-06-21 08:13:57 373

原创 C++学习笔记系列2-24

在二维数组的遍历中,我们通常都会用到这种方式计算二维数组的“行”、“列”,这种方式更加的安全可靠,// 返回的结果值赋予 hang 这个变量,以现在这个数组 array1 来说,返回的值为:2,其中一行 变量类型。// 返回值传给 lie ,这个值应该为 4。

2026-06-20 08:04:28 388

原创 C++学习笔记系列2-23

/ 大括号包裹大括号,但是大括号内的大括号是按声明的方式进行包裹的,而非随意包裹。这种方式声明更加直观,阅读代码时可以明显看出行列的数量。以上这个二维数组就是一个“行列”均为:5的二维数组。同时我们也要注意它的索引号也是由 0 开始的,这一点要多注意,尤其在循环遍历输出时。

2026-06-20 08:04:09 599

原创 C++学习笔记系列2-22

/ 通过索引号就可以将对应位置的数值修改了。以上就是如何修改数组中某个特定元素的基础方式。索引号 0 1 2 3 4。同样我们可以使用上一篇的函数,对其进行一些改动即可。数组中的元素是可以修改的。即:先查询,再修改,

2026-06-19 07:00:04 613

原创 C++学习笔记系列2-21

没有与输入相同的元素,那么 find 的值就没有被修改。find 就被改为 true,跳出循环后,再来到 if (!取反后 就变为false,则不能进入该语句块,所以也就不会输出下面的内容了。arr[ ] 是数组,size 是数组长度,num 是想要查找的值。“取反”,则将 false 改为 true,因此满足 if 条件,满足 num == arr[ i ] 这个条件,则语句块中的。进入 if语句,则说明输入值找到了和数组中一样的值,输出下方内容,即:没有与传入值一样的数值。,还是初始值:false,

2026-06-19 06:59:47 561

原创 C++学习笔记系列2-20

/ 删掉后面 2 个元素,即 5 和 6。// 删掉前面 1 个元素,即 1。如果我们想删掉原数组的 n 个元素,那么就创建一个长度为 :原长度 - n 的新数组。数据搬家操作,将arr1中前 4 个数据传入arr2中对应坑位。这样就跳过了 arr1的 0 号索引位置,以达到删除的效果。// 输出arr2中的数据。i < 4 ,是以arr2的长度为条件。但是要注意 j 的索引起始值为 1,

2026-06-18 08:02:33 434

原创 C++学习笔记系列2-19

在此我多说两句,其实再复杂的代码也是由最基础的语句一点一点搭建起来的,程序运行很大一部分就是数据的传输,可能是“分路径传输”,如:switch;像以上这种静态数组增加元素,在实际应用几乎很少使用,但是我们必须通过这种方式学习它的特性,在编码或者阅读代码时体会它的用法。如果觉得自己这些语句还没有掌握太牢固,可以回看我之前的笔记,因为我不想写太多内容,一是自己也懒,二是自主学习本来就是违反天性,所以每篇基本都控制在1000字左右,10-15分钟就能看完。C++学习笔记系列1-11————do-while语句。

2026-06-18 08:02:00 672

原创 C++学习笔记系列2-18

for循环:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20。就是通过数组索引号,也就是常说的“下标”进行数据读取,数组元素少时,可以用一用。这时就要请出我们的循环语句了,cout << "while循环:" <<;cout << "for循环:" <<;for循环中自带变量 i 、判断条件,以及自增逻辑,// a 在每次作为索引号进行数组访问后,进行自增。// 当 a 为19时,则数组中元素都输出完毕,

2026-06-17 07:17:19 462

原创 C++学习笔记系列2-17

/ 声明了一个int型数组,名称为 arr2,当然这里已经给定了长度,但是我们可以试验一下上面的公式是否正确。变量类型 数组名称 [ 长度 ] = { 元素1,元素2,元素3,......,元素n };编译器会自动根据变量类型,为其填充 3 个 “0.0”,如果是 int 类型,则填充 3 个“0”。“索引号”统统都是从“0”开始,如果这个数组长度为:5 ,它的索引号就依次是: 0 1 2 3 4。// 数组为float类型,长度(容量)为:3,但是没有赋予数组元素值,那么。

2026-06-17 07:17:03 471

原创 C++学习笔记系列2-16

全局变量可以被其他源文件访问,而做到这一点的原因,就是extern的功劳。在这里使用A.cpp中全局变量 a 和函数func()extern类型变量需要配合之前学习的全局变量使用。以下是 A.cpp 代码内容,我要将。

2026-06-16 06:56:36 281

原创 C++学习笔记系列2-15

由于现代编译器已经非常优化了,对寄存器的分配也相对智能了,在使用register变量时,其实也起不到太大作用,并且C++17 标准已将该关键字废弃,如今全部依靠编译器自动分配寄存器。但是我们还是要对它有一些了解。平时我们声明的变量都是存储在内存中,但是需要与CPU进行联系才能读取数据,而register则是直接存在CPU的寄存器中,因此调用起来更加便捷。但是寄存器的空间极其有限,所以要斟酌使用。register变量是可以进行快速访问的类型变量,在很久以前CPU性能没有那么强悍的时候,

2026-06-16 06:56:21 208

原创 C++学习笔记系列2-14

cout<<"静态全局变量:"<< b <<endl;cout<<"静态局部变量:"<< c <<endl;优点:静态变量只初始化一次,数据一直保留,默认值为:0或空值。cout<<"普通变量:"<< a <<endl;,它和auto变量一样,也是写在变量声明的最前面。缺点:静态变量会一直占用内存空间,直到程序运行结束。正因如此,静态变量更适合做一些统计数据的函数因子。静态全局变量、静态局部变量。通过以上代码,我们看到静。

2026-06-15 07:57:14 273

原创 C++学习笔记系列2-13

我们可以看到每个变量都进行了初始化赋值,用于告诉编译器它的变量类型。决定了变量的“存储位置”、“生命周期”、“作用域”和“初始值”。在声明变量时省去书写变量类型的环节。要求变量必须被初始化,

2026-06-15 07:57:02 371

原创 C++学习笔记系列2-12

它的出现就是在建议编译器,在使用这个函数时,不需要进行常规的操作了,可以直接将该函数内部的函数体复制、替换到每一处调用该函数的地方,进而可以小幅降低系统开销。但是这个建议,编译器是可以根据条件决定是否执行。内联函数的主要特征是,在函数的。

2026-06-14 08:44:32 359

原创 C++学习笔记系列2-11

但是一旦它满足 if 语句的条件,就执行 if 里面的逻辑,通常是通过return跳出函数避免“死循环”。它和while很像,但是它是一个函数,而while是一个语法。上面这个案例就是最简单的递归函数,我们看到函数体里面对传入的变量 a 进行输出,然后进行“自增”运算,再然后进入 if 语句判断,在日常代码语句中,在能使用它的地方可以多思考,多应用,掌握它的运行规律,下面我写一个递归函数的代码,用代码逻辑展示一下递归。输出:0 1 2 3 4 5 6 7 8 9 10。这边是我对递归的比较简单化的理解。

2026-06-14 08:44:12 276

原创 C++学习笔记系列2-10

函数重载在学习“面向对象”编程时,为类声明构造函数时使用的居多,在本篇中我们了解它的特点就行了。函数名一样,但是参数数量、参数类型、参数类型顺序不一样的,函数重载的主要知识点就是参数的变化.以上4点就是函数重载的特点,通过这个例子,我们看到。

2026-06-13 08:27:45 382

原创 C++学习笔记系列2-9

如果定义了一个全局变量,名称为 i ,并赋值,然后又在主函数中重复定义了,即:变量类型、名称都一样,只是值不同,那么则以最后一个为准。主函数和我们定义的普通函数一样,也是具有作用域的,因此我们在主函数中声明的变量,也是同样的效果。// 我们可以看到,int i =999 这个。出了这个大括号,这个段代码就被系统收回了,// 这是主函数代码。,并且声明的位置也有所不同,可以在程序的任何位置调用它。

2026-06-13 08:27:29 329

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除