- 博客(21)
- 收藏
- 关注
原创 C++入门六式——内存管理
new的原理:1.调用operator new申请空间。2.在申请的空间上执行构造函数,完成对象的构造。delete的原理:1.在空间上执行析构函数,完成对象中资源的清理工作。2.再用operator delete函数释放对象的空间。
2025-04-15 23:33:38
320
4
原创 数据结构——单链表
当我们想要保存一个整型数据时,实际是向操作系统申请了一块内存,这个内存不仅要保存整型数据,也需要保存下一个结点的地址。与顺序表不同的是,链表里的每节“车厢”都是独立申请下来的空间,我们称之为“结点”。当我们想要保存的数据类型为浮点型,字符型时,我们也可以改变。上非连续,非顺序的储存结构,数据元素的。plist此时指向第一个结点,接下来我们来实现这些函数。
2025-04-07 22:57:15
422
2
原创 数据结构——顺序表
线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表,链表,栈,队列,字符串.......线性表在逻辑上是线性结构,也就是说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上储存时,通常以数组和链表的形式存储。
2025-04-03 21:43:16
673
3
原创 C++入门五式——类和对象(下)
引用成员变量,const成员变量,没有默认构造的类类型变量,必须放在初始化列表位置进行初始化 ,否则编译报错。
2025-03-27 23:04:33
917
4
原创 日期类的实现
hellohello,又见面啦!既然我们已经学过类和对象了,那么我们也可以进行这个日期类的实现了!这就是我们接下来的任务哦~先做然后看看我们方法有什么不同吧~跟+=没什么大区别 ,不过我们还可以通过+=构造+同理,我们也能用-=构造- 日期减日期
2025-03-20 22:20:28
249
原创 C++入门四式——类和对象(中)
我们的date类中有int跟print()两个成员,函数体中没有关于不同对象的区分,那当d1调用int和print函数时,该函数是如何知道应该访问的是d1对象还是d2对象呢?这里C++给出了一个隐含的this指针解决这里的问题。编译器编译后,类的成员函数默认都会在形参第一个位置增加一个当前类类型的指针,叫做this指针。上图注释的就是。类的成员函数中访问成员变量,本质也是通过this指针访问的,如init中给_year赋值。C++中规定不能在形参和实参的位置显示的写this指针,编译器会自动处理。
2025-03-16 22:26:46
1183
2
原创 C++入门三式——类和对象(上)
为了区分成员变量,一般习惯上成员变量会加上一个特殊标识如成员变量前面或者后面加上_,m。注意:这个不是强制的,只是一些惯例。C++中 struct 也可以定义类 ,C++兼容C中struct的用法,同时struct升级成了类,明显的变化是struct中可以定义函数。一般我们还是推荐用class定义类。定义在类中的成员函数默认为inline。关于类的基本格式,我们可以看下面代码的注释哦~class date //class:关键字 date:类的名字//类的主体//类体中的内容称为类体成员。
2025-03-12 21:56:59
469
原创 C++入门二式
引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。类型& 引用别名=引用对象;//一个变量可以取多个别名int& b = a;//给a变量取别名int& c = a;//c也是a的别名int& d = b;//给b变量取别名,相当于d也是a的别名//从地址中也可以看出来a,b,c,d占用同一块内存空间return 0;
2025-03-08 16:56:17
917
2
原创 C++入门一式
定义命名空间,需要使用namespace关键字 ,后面跟命名空间的名字,然后接{命名空间的成员}。命名空间中可以定义变量,函数,类型等。//定义变量//定义函数//定义结构体int age;namespace的本质是定义出一个域,这个域跟全局域各自独立,不同的域可以定义同名变量,所以rand不再冲突了。编译器查找规则:1.先局部再全局 2.指定域查找namespace只能定义在全局,当然也可以嵌套定义。//嵌套定义。
2025-03-05 21:39:51
269
3
原创 文件操作的基本内容
通俗来说,硬盘上的文件就是文件。按照功能来分类,一般分为:程序文件和数据文件。针对文本信息:针对二进制信息:从流中读取count个元素,每个元素大小为size个字节,并将它们储存在ptr指定的内存块中将 count 元素数组(每个元素的大小为 size 字节)从 ptr 指向的内存块写入流中的当前位置。
2025-01-12 21:04:17
903
原创 动态内存管理
目录为什么要有动态内存分配malloc和freemallocfreecalloc和realloccallocrealloc常见的动态内存的错误1.对NULL指针的解引用操作2.对动态开辟空间的越界访问3.对非动态开辟内存使用free释放4.使用free释放一块动态开辟内存的一部分5.对同一块内存多次释放6.开辟动态内存忘记释放(内存泄漏)柔性数组 柔性数组的特点柔性数组的使用 1.变量和数组的方式不够灵活2.使用动态内存分配可以自己来维护内存使用的生命周期头文件<stdlib.h>向内存申请一块连续可
2024-12-31 21:55:32
1438
原创 数据在内存中的储存
如1,把一个数据的低位字节的数据存放在高地址处,把一个数据的高位字节数据存放在低地址处。如2,把一个数据的低位字节数据放在低地址处,把一个数据的高位字节数据存放在高地址处。大端小端都是以字节为单位的。为什么会有大小端之分?这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着⼀个字节,⼀个字节为8bit 位,但是在C语⾔中除了8 bit 的 char 之外,还有16 bit 的 short 型,32 bit 的 long 型(要看。
2024-12-16 12:09:57
598
原创 字符函数和字符串函数
c语言中有一系列函数是专门做字符分类的,这些函数的使用都需要包含一个头文件是ctype.h.函数如果它的参数符合下列条件就返回真iscntrlisspaceisdigitisxdigitislowerisupperisalphaisalnumispunctisgraphisprint这些函数的使用方法非常类似,我们就以islower。
2024-12-06 20:41:53
2030
1
原创 深入理解指针(5)
回调函数就是一个通过函数指针调用的函数。如果你把函数的指针作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,被调用的就是回调函数。
2024-12-01 22:42:07
373
原创 深入理解指针(4)
切入点 signal(int,void(*)(int))从这里我们可以看出来它是一个函数,一个参数类型为int,另一个为void(*)(int)。二维数组的每一行其实是一个一维数组,那么二维数组其实可以理解为是一维数组的数组。那就意味着,二维数组传参本质上也是传递了地址,传递的是第一行这个一维数组的地址。二维数组的数组名代表的就是第一行的地址,是一维数组的地址。答案是否定的,p1的类型为 int*,p2则为int。字符指针变量是指向字符的,储存的是字符的地址。函数名是函数的地址,&函数名也是函数的地址。
2024-11-27 21:42:33
1930
2
原创 深入理解指针(3)
我们可以发现,arr 跟 arr+1 相差4个字节,&arr 跟 &arr+1相差12个字节,这是因为,&arr代表的是整个数组的地址,+1代表跳过整个数组。在这里,可以看出,sizeof中arr代表的是数组,计算的是整个数组的大小。那麽在数组传参的时候,传递的是数组名,也就是说。正是因为函数的参数部分本质是指针,所以在函数内部是没办法求数组元素的个数的。我这里用的是64位的环境,指针变量大小为8个字节,8/4=2。通过下面的代码,可以看出,数组名确实是数组首元素的地址。数组名是数组首元素的地址。
2024-11-23 14:45:21
677
2
原创 深入理解指针(1)
内存单元的编号=地址=指针CPU和内存之间也有大量数据交互,用“线'连起来(32位机器上有32根地址总线,每根线表示1或0,每根线可以表示2种状态,32根可以表示2^32种情况,每一个就代表一个地址.向内存中申请空间。
2024-11-19 13:25:32
451
2
原创 简单介绍扫雷游戏及其代码实现
由于表示雷的个数“1”与表示雷的“1”会有冲突,我们可以设置两个棋盘(一个为 mine,即自己可以看到的;初始化时把11*11初始化,打印时只打印9*9,再排查雷时就不会出现越界访问o(^・x・^)o~比较懒,就复制了函数声明,把里面的删了再用,结果用函数的时候,忘记删了 返回类型 ,最终导致错误❌。游戏区域由多个隐藏格子组成,每个格子可能隐藏着地雷或数字,数字表示周围八个格子中地雷的数量。我们演示的是9*9的格子,为了以后好改动,我们把行列定义出来,到时候升级时,容易改动~打印棋盘时,下标从0开始。
2024-11-17 09:16:54
706
1
原创 你好,c语言
对于c语言,起初我根本不了解,报这个专业也是感觉计算机前景好。随着学习,我发现c语言是一门语言,人与计算机之间的。网络发达,学习c语言有很多途径,在bilibili上听网课,还有mooc,知乎,当然还有这个平台。听完课去练手,学编程一定要多敲代码!学编程,我想最重要的就是c语言,掌握好了一门基础语言,再去学习别的,各式各样的语言。我对开发软件比较有兴趣,准备用两个月学习c语言,之后接着是c++,java。我是新入学物联网工程的大一新生,一个代码小白,一个怀揣着成为大佬梦想的正在追梦路上的追梦人。
2024-10-20 20:23:18
407
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人