- 博客(31)
- 收藏
- 关注
原创 命名空间————————
char c;char c;在这里我们在别的文件中使用头文件中定义的数据是可以正常使用的,也就说明了在这里,被命名空间只要名字相同定义的变量在其他文件中同样可以被访问。
2024-09-19 23:29:22 436
原创 C++--类的实例化
用类类型在屋里内存中创建对象的过程,称为类实例化出对象类是对对象进行一种抽象描述,是一个模型一样的东西,限定了类有哪些成员变量,这些成员变量只是声明,没有分配空间,用类实例化出对象时,才会分配空间。一个类可以实例化出多个对象,实例化出的对象占用实际的物理空间,存储类成员变量。举个例子:类实例化出对象就像现实中使用建筑设计图建造出房子,类就是设计图,设计图并不是实体化的建筑,只有当使用设计图修建出房子后,这个房子才能住人。类同理,它不能存储数据,实例化出的对象分配物理内存数据。
2024-09-17 11:02:45 1116
原创 数据结构--栈和队列
栈是一种特殊的线性表,它只允许在固定的一段进行插入和删除元素操作。首先创建用于队列实现的两个结构体,分别是队列的数据域和指针域,以及分别指向队列的头和尾的指针。首先便是创建一个以数组为底层的栈(栈的形式与顺序表相似,因为它们都是以数组为底层逻辑的)。只允许在一端进行插入数据操作在另一端进行删除数据操作的特殊线性表,对列具有先入先出的特性。栈的实现可以使用数组也可以使用链表,相对而言数组更为合适。出栈:栈的删除操作叫做出战,删除数据也是从栈顶开始删除。压栈:栈的插入操作叫做压栈,插入的数据存放在栈顶。
2024-09-02 21:05:30 623
原创 C++入门级文章
1、定义命名空间:其使用方法就是namespace后面加上命名空间域的名字跟一个大括号即可,其内容可以是变量/函数/结构体等。2、其本质是开辟一个独立的空间域,独立于全局域和局部域之外,在定义的命名空间域内创建与全局变量相同名字的变量不会产生冲突。int a = 20;int a = 10;3、namespace只能定义在全局,同时它是可以嵌套定义的int a = 10;int a = 10;4、在多文件下定义的同名namespace会被认为是同一个空间域。
2024-08-03 01:50:31 368
原创 环形链表2--绝妙的运算
/ // 也就是说phead2是从x开始走的,他们两个走的距离刚好越过了X即L = N * C 两者的相遇点就是环形链表的起点。// // phead1和phead2相交的位置到环状链表环的起点的位置为X。指针再次到达,则链表中存在环。对链表的地址进行判断,当两链表指向的地址相同时说明该链表为环形链表。接下来判断链表是否为空链表以及链表的首项指向的地址是否为空;
2024-04-06 11:46:45 559
原创 环形链表--极致的简便
指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数。这里为什么是使用的phead2来进行判断而不是使用的phead1来判断的呢?对链表的地址进行判断,当两链表指向的地址相同时说明该链表为环形链表。接下来判断链表是否为空链表以及链表的首项指向的地址是否为空;来表示链表尾连接到链表中的位置(索引从 0 开始)。如果链表中有某个节点,可以通过连续跟踪。仅仅是为了标识链表的实际情况。的问题说明该链表不是环形链表;的方式来解决环形链表问题。,判断链表中是否有环。给你一个链表的头节点。
2024-04-06 11:04:56 192
原创 C语言实现通讯录(从0-1的项目)
最基础的数据结构就是数组。顺序表则是线性表的一种,常见的线性表有:顺序表、链表、栈、队列等。线性表在逻辑上是线性结构,但是在物理上不一定是连续的。//销毁//销毁。
2024-04-03 18:35:55 551
原创 力扣刷题:26. 删除有序数组中的重复项
更改数组 nums ,使 nums 的前 k 个元素包含唯一元素,并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与 nums 的大小不重要。重复出现的元素,使每个元素只出现一次 ,返回删除后数组的新长度。根据题目要求首先第一点就是我们不能额外创建空间来完成这道题目。不创建空间怎么删除多余的元素,又如何保存应当存在的元素呢?给你一个 非严格递增排列的数组nums ,请你。然后返回 nums 中唯一元素的数。元素的相对顺序应该保持一致。
2024-03-30 23:27:01 335
原创 你真的了解回调函数吗?(文章最后放置源码)
简单来说就是通过函数指针调用的函数。复杂一些呢就是说将函数的指针(地址)作为参数传递给另外一个函数使用,当这个指针被用来调用其指向的函数的时候被调用的函数就是回调函数。
2024-03-30 12:18:15 305
原创 深入理解指针(7)函数指针变量及函数数组(文章最后放置本文所有原码)
其实对于当前代码量较少,类型也比较简单的状态确实没有什么用处,但是当后期学习的更多了就能明白这个的重要性了,比如一个很长的代码中,我们要将其中所有的int类型的数据改成double类型,此时我们只需要在上面进行更改即可,一次更改后面的所有的int类型的数据都会更改为double类型,就不需要再一个一个慢慢的改了!经过上面的测试可以看到函数也是有地址的,而且其地址就是函数名(当前是x86环境,这样地址值相对较短更容易分辨)。既然是指针变量,那么它指向的一定是地址,而且我们可以通过地址来调用函数的。
2024-03-29 23:02:13 451 1
原创 动态内存数组(malloc、calloc、realloc、free)
以上就是创建成功我们可以做的事,而当malloc函数创建失败时,它会返回NULL,而NULL指针的使用会导致野指针。此时我们创建的malloc函数存在两种可能,首先第一种是创建成功了,第二种就是创建失败了。的方式来申请空间的缺点就是一旦创建成功,则空间不能改变。让程序员⾃⼰可以申请和释放空间,就⽐较灵活了。这样就OK了,这就是malloc函数的完整用法。,顾名思义就是说在内存中非固定的申请数组。参数是你要创建的空间数,单位为字节。直接创建变量/通过创建数组。直接创建变量/通过创建数组。
2024-03-20 23:52:30 310 1
原创 深入理解指针(6)字符、数组指针变量以及二维数组传参本质
他们是连续存在的,而二维数组的首元素指向的就是第一行的地址,此时当我们将数组arr+1时,指针指向的内容就会跳过一个一维数组,来到第二个数组的地址。arr[5]指向数组每行有多少列,* 指针指向的是数组的首元素地址,二维数组的首元素就是第一行的地址。可以看到这里的ptr的实际指向时字符串的首元素地址,而不是我们所通常认为的指向a这个字符串。前面我们已经学习过指针数组,本质是数组,数组的内容是地址,那么数组指针变量是什么呢?同样的道理,在这里的一维数组中,ptr指向的就是数组的首元素地址而非整个数组。
2024-03-17 18:16:59 323 1
原创 十分钟学懂数据在内存中是如何存储的(整数和浮点数)
在计算机内存中只要是超过一个字节的存储内容就会存在存储的排序问题。大端字节序:将高位存储在低地址,低位存储在高地址的存储方法小端字节序:将低位存储在低地址,高位存储在高地址的存储方法这里的存储规则应当记住。
2024-03-17 16:34:51 2163 1
原创 strcpy、strcat、memcpy、memmove函数的使用及模拟实现
是C语言中的一个标准库函数,用于复制字符串。它位于 头文件中,函数原型为:该函数的功能是从源字符串 中复制字符到目标字符串 ,直到遇到空字符('\0')为止,即复制包括空字符在内的一整个字符串。注意:2、模拟实现二、memcpy函数的使用及模拟实现1、使用 是C语言中用于复制内存区域的标准库函数,它位于 头文件中。其原型定义为: dest:指向目标内存区域的指针。 src:指向源内存区域的指针。 n:要复制的字节数。 函数将从 指向的内存区域复制 个
2024-03-14 18:32:32 620 1
原创 深入理解指针(5)
parr[i]是访问parr数组的元素,parr[i]找到的数组元素指向了整型⼀维数组,parr[i][j]就是整型⼀维数组中的元素。上述的代码模拟出⼆维数组的效果,实际上并⾮完全是⼆维数组,因为每⼀⾏并⾮是连续的。我们类⽐⼀下,整型数组,是存放整型的数组,字符数组是存放字符的数组。指针变量也是变量,是变量就有地址,那指针变量的地址存放在哪⾥?指针数组中的每个元素都是地址 他们又都指向一块空间。指针数组的每个元素都是⽤来存放地址(指针)的。我们通过图形来观察一下他的循环过程。指针数组是指针还是数组?
2024-03-10 17:43:01 427 1
原创 深入理解指针(4)
这个代码搞明⽩后,我们再试⼀下,如果我们再分析⼀下,数组名arr是数组⾸元素的地址,可以赋值给p,其实数组名arr和p在这⾥是等价的。这⾥我们发现&arr[0]和&arr[0]+1相差4个字节,arr和arr+1 相差4个字节,是因为&arr[0] 和 arr 都是⾸元素的地址,+1就是跳过⼀个元素。同理arr[i] 应该等价于 *(arr+i),数组元素的访问在编译器处理的时候,也是转换成⾸元素的地址+偏移量求出元素的地址,然后解引⽤来访问的。数组名如果是数组⾸元素的地址,那下⾯的代码怎么理解呢?
2024-03-09 23:10:01 476
原创 Problem: LCR 004. 只出现一次的数字 II 超详细讲解!!!
Problem: LCR 004. 只出现一次的数字 II1.思路2.复杂度3.Code
2024-03-09 12:18:07 154
原创 深入理解指针(3)
我们现在要解决的就是当调⽤Swap函数的时候,Swap函数内部操作的就是main函数中的a和b,直接将a和b的值交换了。那么就可以使⽤指针了,在main函数中将a和b的地址传递给Swap函数,Swap函数⾥边通过地址间接的操作main函数中的a和b,并达到交换的效果就好了。传址调⽤,可以让函数和主调函数之间建⽴真正的联系,在函数内部可以修改主调函数中的变量;我们可以看到实现成Swap2的⽅式,顺利完成了任务,这⾥调⽤Swap2函数的时候是将变量的地址传递给了函数,这种函数调⽤⽅式叫:传址调⽤。
2024-03-06 22:29:51 1293 1
原创 深入理解指针(2)
就是为了不能被修改,如果p拿到n的地址就能修改n,这样就打破了const的限制,这是不合理的,所应该让 p拿到n的地址也不能修改n,那接下来怎么做呢?当指针变量指向⼀块区域的时候,我们可以通过指针访问该区域,后期不再使⽤这个指针访问空间的时候,我们可以把该指针置为NULL。,只不过被const修饰后,在语法上加了限制,只要我 们在代码中对n就⾏修改,就不符合语法规则,就报错,致使没法直接修改n。const如果放在*的左边,修饰的是指针指向的内容,保证指针指向的内容不能通过指针来改变。
2024-03-06 22:13:51 397 1
原创 深入理解指针(1)
他们深爱彼此,他因病离开她。她以为他抛弃了她,他痊愈回来发现她已婚了。 后来,她离婚了。 他又遇到了她,两人还爱着对方,他决定和她在一起。 结果,她得了癌症。 最后,她在他的怀里说,我写了篇博客,你可以来看看吗?
2024-03-05 18:13:04 421
原创 他,冷冽霸道,商界传奇;她,娇俏可爱,豪门千金。一次偶然,他与她相遇,从此他对她宠溺无边。她:这个世界只有我能欺负你!他:会用不是目的,思维才是关键,创建可以对任意数据进行排序的qsort函数
他,冷冽霸道,商界传奇;她,娇俏可爱,豪门千金。一次偶然,他与她相遇,从此他对她宠溺无边。她:这个世界只有我能欺负你!他:会用不是目的,思维才是关键,创建可以对任意数据进行排序的qsort函数
2024-03-03 21:48:51 522
原创 qsort函数的使用
在寒风凛冽的夜晚,老人孤独地坐在窗前。他的妻儿早已离去,只剩下他与寂寞为伴。窗外的雪花飘落,仿佛在说来看看文章吧,真的太惨淡了......
2024-03-03 10:56:33 518
原创 使用异或大法,找到闹矛盾的小情侣.......普通版:时间复杂度O(N),空间复杂度O(N) 进阶版:时间复杂度O(N),空间复杂度O(1)
1.定义一个数组2.对数组中的所有值进行异或处理//sz的值为数组长度//定义变量接收得到的数//遍历并异或i < sz;i++)3.将这个得到的数和1进行按位与操作int k = 0;//tmp按位与1,如果等于1说明当前位置上的二进制数为1//如果为0就让他右移一位j
2024-02-27 08:45:00 315
原创 巧用运算符之抓获藏在情侣中的单身狗(源码在文章最后需要自取)
好了,以上就是我们找单身狗的运算符解法了,有不同见解的帅哥美女欢迎指教!将数组创建出来并获取他的长度 创建两个变量用来接收找到的单身狗。创建一个函数来实现目标:参数使用数组+数组长度+两个变量地址。一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。有数组的元素是:1,2,3,4,5,1,2,3,4,6。编写一个函数找出这两个只出现一次的数字。只有5和6只出现1次,要找出5和6.
2024-02-07 13:51:59 357 3
原创 扫雷小游戏,共学共进,文章最后会放置源码
在接下来的游戏实现过程中我将会尽可能的以代码的形式展示给大家,其中附带我的个人理解,以注释形式展示。文件的创建我不再进行过多的赘述,本次游戏实现需要用到一个头文件,一个测试文件和一个主文件。
2024-01-07 11:57:28 1740
原创 C语言分支循环语句详解
在C语言中循环分为for循环、while循环、do...while...循环;分支包括switch分支、if...else...分支。
2023-12-23 10:00:00 545
原创 C语言关键字介绍!!!
一、数据类型关键字(12个):char, double, enum, float, int, long, short, signed, unsigned, struct, union, void。二、控制语句关键字(12个):循环语句(for, do, while, break, continue)和条件语句(if, else, goto)。在此示例中定义了一个名为Data的union,其中包含了两个成员变量,每次赋值上一个变量的值都会被覆盖,再次输出时则会打印一个未定义的值。
2023-11-30 10:00:00 449
原创 VS2022初次使用教程
三、此时我们看到这里有项目名称和位置两项需要我们进行手动修改 建议名称以有意义英文来命名(1.这样可以让你在下次打开时清楚自己所创建的文件是什么作用 2.文件以中文命名的话有可能会出现Bug)位置这里建议选择自己可以随时找到的文件夹(如果没有可以先创建一个)六、此时一个新的项目已经开始创建了 我们看到最左侧的Visual C++ 这里面就是创建项目的地方 此时我们看到可创建文件里面并没有C的创建项 我们点击C++文件即可 左下角的名称需要更改为文件名.c 这样的格式 位置默认即可 点击添加。
2023-11-19 17:11:54 1127 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人