- 博客(26)
- 资源 (1)
- 收藏
- 关注
原创 C语言之结构体
仍然以书来举例,例如:先定义变量<1>.声明类型的同时定义变量 p1// 书名// 作者// 出版社// 定价}b1;<2>.定义结构体变量// 书名// 作者// 出版社// 定价//全局的int main()//main函数里的return 0;注意:可以看出写一个结构体变量是要带上struct的,如果我们嫌麻烦,可以用typedef一下// 书名// 作者// 出版社// 定价}b1 = {"修仙","张三","天上",99.99};
2026-04-04 17:01:03
350
原创 基础开发工具(下)
程序的发布方式有两种,debug模式和release 模式, Linux gcc/g++ 出来的⼆进制程默认是release 模式,所以要使用gdb调试,必须在源代码上成⼆进制程序的时候,加上-g 选项,如果没有添加,程序无法被编译成debug模式。由于我已经安装了git,自然是nothing to do,而未安装的,看到complete就代表安装成功了,而。<3>.在创建好的仓库里,点击克隆,再点击复制git clone +"地址"",然后在新的页面,根据需要填写仓库名称与路径,记得要勾选初始化。
2026-03-28 16:07:17
608
3
原创 基础开发工具(中)
本文介绍了Linux下的自动化构建工具make/Makefile和进度条程序的实现。首先讲解了Makefile的基本使用,包括依赖关系与依赖方法的定义、项目清理操作以及.PHONY指令的作用。然后详细说明了回车与换行的区别,并通过缓冲区刷新机制解释了输出顺序问题。最后给出了一个完整的进度条程序实现方案,包含头文件process.h、源文件process.c和主程序processmain.c。文章通过具体示例演示了如何利用Makefile自动化编译过程,以及如何实现带百分比和旋转标记的动态进度条效果。
2026-03-24 00:45:00
792
1
原创 C++11的部分内容(上)
摘要:本文深入探讨了C++11中的列表初始化和右值引用两大特性。在列表初始化方面,详细介绍了{}统一初始化方式的特点、initializer_list容器的实现原理及其与传统初始化方式的区别。在右值引用方面,系统分析了左值/右值的本质区别、右值引用的语法特性、移动语义的实现原理,并通过string类的案例展示了移动构造和移动赋值如何提升程序性能。文章还对比了不同编译器对临时对象的优化策略,解释了右值引用变量具有左值属性的原因,为理解现代C++的高效编程提供了全面指导。
2026-03-14 18:38:14
622
原创 深入理解指针(1)
本文系统介绍了C语言中指针的核心概念与应用。首先通过宿舍楼案例类比内存管理,解释内存单元、地址与指针的关系,说明指针即内存地址。详细讲解了取地址(&)和解引用()操作符的使用,以及指针变量的声明和类型含义。文章分析了指针在不同平台下的大小差异(32位4字节/64位8字节),并探讨了指针运算规则(如+-整数、指针减指针等)。同时介绍了void指针的泛型特性和const修饰指针的两种用法。针对指针常见问题,重点讲解了野指针的三种成因及防范措施,assert断言的使用场景。最后通过交换变量的案例对比了传值
2026-03-08 17:55:53
562
2
原创 Linux系统的基础指令(下)
后,就创建了一个带有hello.kong的文件。而后,在再test.c中添加内容时,原先的内容就会被覆盖掉,如果想要保留原来的内容,就需要>>
2026-02-28 18:15:00
1950
1
原创 Linux系统的基础指令(上)
要安装的软件:1.Xshell8,下载安装的时候选择home/school则为免费版本。 2.购买一个云服务器,比如腾讯云,华为云,阿里云,2核2G4M的,1年费用为60~80元的即可。注意:如果Xshell8的界面会话是下图,就说明云服务器还没用连接Xshell,那我们就需要连接一下。注意:XShell 下的复制粘贴:复制: ctrl + insert (有些人的insert需要配合fn来按) 粘贴: shift + insert 但是ctrl + c /
2026-02-26 19:34:39
654
原创 AVL树的实现
b⼦树中新增结点的位置 不同,平衡因⼦更新的细节也不同,通过观察8的平衡因⼦不同,这⾥我们要分三个场景讨论。• 场景1:h>=1时,新增结点插⼊在e⼦树,e⼦树⾼度从h-1变为h并不断更新12->15->10平衡因 ⼦,引发旋转,其中12的平衡因⼦为-1,旋转后10和12平衡因⼦为0,15平衡因⼦为1。• 场景1:h>=1时,新增结点插⼊在e⼦树,e⼦树⾼度从h-1并为h并不断更新8->5->10平衡因⼦, 引发旋转,其中8的平衡因⼦为-1,旋转后8和5平衡因⼦为0,10平衡因⼦为1。
2026-02-23 15:14:33
1282
原创 操作符详细解释
其实我们经常能听到 2 进制、 8 进制、 10 进制、 16 进制 这样的讲法,那是什么意思呢? 其实2进制、8进制、10进制、16进制是数值的不同表⽰形式⽽已。⽐如:数值15的各种进制的表⽰形式:15 的 2 进制: 1111 15 的 8 进制:17 15 的
2026-02-18 14:58:18
944
原创 继承的篇章
举一个例子:下⾯我们看到Person是基类,也称作⽗类。Student是派⽣类,也称作⼦类。(因为翻译的原因,所以 既叫基类/派⽣类,也叫⽗类/⼦类)1.2.1.继承基类成员访问⽅式的变化<1>.基类private成员在派⽣类中⽆论以什么⽅式继承都是不可⻅的。这⾥的不可⻅是指基类的私有成员 还是被继承到了派⽣类对象中,但是语法上限制派⽣类对象不管在类⾥⾯还是类外⾯都不能去访问 它。<2>.
2026-02-15 14:46:21
935
原创 模板详细介绍与应用
在C++中,如果我们想要写一个关于int,double的交换函数,就需要这样写,但是我们发现这除了类型,两个函数高度的相似,虽然使用函数重载实现了,但也有一些坏处:<1>.代码复用率比较低,只要有新类型出现时,就需要我们自己增加对应的函数。<2>.代码的可维护性比较低,一个出错可能所有的重载均出错。那么能否告诉编译器一个模型,让编译器根据不同的类型利用该模型来生成代码呢?答案就是模板的出现。泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础。1.1.概念函数模板代表了一个函
2026-02-12 13:55:11
909
原创 函数的详细解释
⼀般我们在使⽤函数的时候,直接将函数写出来就使⽤了。⽐如:我们要写⼀个函数判断⼀年是否是闰年。// 逻辑:(能被4整除 且 不能被100整除) 或者 (能被400整除)return 1;return 0;printf("请输入年份: ");// 函数调用printf("%d 年是闰年。\n", year);elseprintf("%d 年不是闰年。\n", year);return 0;上面中的是函数的定义,而int ret = is_leap_year(year);
2026-02-03 17:00:24
1137
原创 类与对象(上)
类名 对象名(参数1, 参数2...);class Datepublic://Init: 成员函数,用于给成员变量赋值_day = day;private://成员变量,这里仅仅是声明,不占实际内存空间int _year;int _month;int _day;int main()// --- 类的实例化 ---// 这一步在栈区为 d1 分配了空间(大小通常为 12 字节)// 此时d1已经存在,但内部的 _year 等是随机值Date d1;
2026-01-29 15:15:00
492
原创 C语言的基础了解(下)
本文详细介绍了C语言中的操作符和输入函数。主要内容包括:1)赋值操作符和算术操作符(+、-、*、/、%),特别说明了整数除法会舍弃小数部分;2)单目操作符(逻辑反、负值、自增自减)的使用规则;3)逻辑运算符(&&、||、!)的真值判断;4)关系操作符(>、<、==等)的比较结果;5)强制类型转换的用法;6)scanf输入函数的使用方法、注意事项和常见问题的解决方案。文章通过具体代码示例展示了各类操作符的实际应用,为后续学习分支与循环结构打下基础。
2026-01-12 13:29:58
1019
原创 C语言的基础了解(上)
数据类型 变量名 = 初始值;声明:变量必须“先定义,后使用”。内存分配:定义时必须指定类型,以便编译器确定分配多少字节(如int分配 4 字节)。将不同的内置类型(或已定义的自定义类型)进行组合、封装或重命名。
2026-01-10 10:23:02
1398
原创 从二叉树的理解到代码的实现(1)
发起 preOrder(9) 调用,为其创建栈帧(复用 preOrder(8) 释放的空闲空间)→ 访问节点9 → 分别发起左、右子树的 preOrder(NULL) 调用(均创建-销毁,且两次 preOrder(NULL) 复用同一块空闲空间);创建栈帧(复用 preOrder(7) 之前释放的空闲空间)→ 访问节点8 → 分别发起左、右子树的 preOrder(NULL) 调用(均创建-销毁,且两次 preOrder(NULL) 的栈帧复用同一块空闲空间);
2026-01-07 14:05:21
853
原创 C语言堆的原理到代码
而交换之后删除堆顶数据可以获得最大值(最小值),接照这个规律依次获取次大值(次大值),最终完成排序,这也是堆的作用之一。我们已经知道堆可以通过数组来实现,但如果只是静态数组,就存在空间不足或者空间浪费过大,因此我们需要通过动态数组。通过向下建堆法与向上建堆法,可以建大堆/小堆,当a[child]>a[parent]时,为大堆,以上为堆的插入,不过是在尾部插入,但明显此时并不是堆,所以我们要通过向上调整法进行调整,下面我举例说明:假设数组元素为[3,7,6,8,9,10,17],接下来,讨论如何排序?
2026-01-03 11:11:27
781
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅