- 博客(17)
- 收藏
- 关注
原创 【数据结构】顺序表——赋源码(结尾)
线性表在逻辑上是线性结构,也就说是连续的⼀条直线。但是在物理结构上并不⼀定是连续的, 线性表在物理上存储时,通常以数组和链式结构的形式存储。线性表是⼀种在实际中⼴泛使 ⽤的数据结构,常⻅的线性表:顺序表、链表、栈、队列、字符串...概念:顺序表是⽤⼀段物理地址连续的存储单元依次存储数据元素的线性结构,⼀般情况下采⽤数组存储。在插入数据之前我们药判断顺序表中的空间是否充足 所以我们要写一个判断空间是否充足的函数。顺序表的底层结构是数组,对数组的封装,实现了常⽤的增删改查等接⼝。在相应的源文件中引入头文件。
2024-08-14 21:36:51
452
20
原创 【数据结构】算法复杂度
实际中我们计算时间复杂度时,计算的也不是程序的精确的执⾏次数,精确执⾏次数计算起来还是很⿇烦的(不同的⼀句程序代码,编译出的指令条数都是不⼀样的),计算出精确的执⾏次数意义也不⼤,因为我们计算时间复杂度只是想⽐较算法程序的增⻓量级,也就是当N不断变⼤时T(N)的差别,上⾯我们已经看到了当N不断变⼤时常数和低阶项对结果的影响很⼩,所以我们。通过对复杂度的分析,可以选择更高效的算法,提高程序的执行效率,并在处理大规模问题时提供良好的扩展性和可维护性。随着数据量的增长,算法的空间消耗也会相应增加。
2024-08-13 14:37:32
980
37
原创 预处理详解
(假定某个程序中声明了⼀个某个⻓度的数组,如果机器内存有限,我们需要⼀个很⼩的数组,但是另外⼀个机器内存⼤些,我们需要⼀个数组能够⼤些。当宏参数在宏的定义中出现超过⼀次的时候,如果参数带有副作⽤,那么你在使⽤这个宏的时候就可能出现危险,导致不可预测的后果。如果是加了分号的情况,等替换后,if和else之间就是2条语句,⽽没有⼤括号的时候,if后边只能有⼀条语句。每次使⽤宏的时候,⼀份宏定义的代码将插⼊到程序中。这⾥我们想想,写⼀个函数求2个数的较⼤值的时候,不同的数据类型就得写不同的函数。
2024-08-10 22:01:40
731
21
原创 【C++】类和对象 ——中
没有显式实现时,编译器会⾃动⽣成⼀个默认赋值运算符重载,默认赋值运算符重载⾏为跟默认拷⻉构造函数类似,对内置类型成员变量会完成值拷⻉/浅拷⻉(⼀个字节⼀个字节的拷⻉),对⾃定义类型成员变量会调⽤他的赋值重载函数。赋值运算符重载是⼀个默认成员函数,⽤于完成两个已经存在的对象直接的拷⻉赋值,这⾥要注意跟拷⻉构造区分,拷⻉构造⽤于⼀个对象拷⻉初始化给另⼀个要创建的对象。如果⼀个重载运算符函数是成员函数,则它的第⼀个运算对象默认传给隐式的this指针,因此运算符重载作为成员函数时,参数⽐运算对象少⼀个。
2024-08-10 21:28:25
965
25
原创 【C++】类和对象 (上中篇)
再分析⼀下,对象中是否有存储指针的必要呢,Date实例化d1和d2两个对象,d1和d2都有各⾃独⽴的成员变量_year/_month/_day存储各⾃的数据,但是d1和d2的成员函数Init/Print指针却是⼀样的,存储在对象中就浪费了。这⾥需要再额外哆嗦⼀下,其实函数指针是不需要存储的,函数指针是⼀个地址,调⽤函数被编译成汇编指令[call 地址], 其实编译器在编译链接时,就要找到函数的地址,不是在运⾏时找,只有动态多态是在运⾏时找,就需要存储函数地址,这个我们以后会讲解。
2024-08-10 21:11:12
1106
32
原创 编译和链接
前⾯我们⾮常简洁的讲解了⼀个C的程序是如何编译和链接,到最终⽣成可执⾏程序的过程,其实很多内部的细节⽆法展开讲解。程序同时也可以使⽤静态(static)内存,存储于静态内存中的变量在程序的整个执⾏过程⼀直保留他们的值。处理#include 预编译指令,将包含的头⽂件的内容插⼊到该预编译指令的位置。将源代码程序被输⼊扫描器,扫描器的任务就是简单的进⾏词法分析,把代码中的字符分割成⼀系列的记号(关键字、标识符、字⾯量、特殊字符等)。链接是⼀个复杂的过程,链接的时候需要把⼀堆⽂件链接在⼀起才⽣成可执⾏程序。
2024-08-07 01:55:26
1069
41
原创 C语言⽂件操作
ANSIC 标准采⽤“缓冲⽂件系统” 处理的数据⽂件的,所谓缓冲⽂件系统是指系统⾃动地在内存中为程序中每⼀个正在使⽤的⽂件开辟⼀块“⽂件缓冲区”。每个被使⽤的⽂件都在内存中开辟了⼀个相应的⽂件信息区,⽤来存放⽂件的相关信息(如⽂件的名字,⽂件状态及⽂件当前的位置等)。通过该⽂件信息区中的信息就能够访问该⽂件。在编写程序的时候,在打开⽂件的同时,都会返回⼀个FILE*的指针变量指向该⽂件,也相当于建⽴了指针和⽂件的关系。⽂件的内容不⼀定是程序,⽽是程序运⾏时读写的数据,⽐如程序运⾏需要从中读取数据的⽂件,
2024-08-05 19:47:22
787
35
原创 初识C++ (下篇)
不论采取何种定义,在使⽤空值的指针时,都不可避免的会遇到⼀些⿇烦,本想通过f(NULL)调⽤指针版本的f(int*)函数,但是由于NULL被定义成0,调⽤了f(int x),因此与程序的初衷相悖。也是类似,在类型转换中会产⽣临时对象存储中间值,也就是时,rb和rd引⽤的都是临时对象,⽽C++规定临时对象具有常性,所以这⾥就触发了权限放⼤,必须要⽤常引⽤才可以。C++中指针和引⽤就像两个性格迥异的亲兄弟,指针是哥哥,引⽤是弟弟,在实践中他们相辅相成,功能有重叠性,但是各有⾃⼰的特点,互相不可替代。
2024-08-04 02:13:13
986
18
原创 重生之我学编程
编程已成为当代大学生的必备技能,但面对众多编程语言和学习资源,新生们常常感到迷茫。如何选择适合自己的编程语言?如何制定有效的学习计划?如何避免常见的学习陷阱?让我们一起探讨大学新生入门编程的最佳路径,为你的大学生活和未来职业发展打下坚实基础。通过以上详细的步骤和建议,你可以在大学期间逐步建立起坚实的编程基础,并朝着成为编程大神的目标迈进。记住,持续的学习、实践和探索是成长的关键!
2024-08-04 01:55:18
566
4
原创 初识C++ (上篇)
每个公司研发团队,有研发就有测试,测试主要分为测试开发和功能测试,测试开发⼀般是使⽤⼀些测试⼯具(selenium、Jmeter等),设计测试⽤例,然后写⼀些脚本进⾏⾃动化测试,性能测试等,有些还需要⾃⾏开发⼀些测试⽤具。使⽤C++输⼊输出更⽅便,不需要像printf/scanf输⼊输出时那样,需要⼿动指定格式,C++的输⼊输出可以⾃动识别变量类型(本质是通过函数重载实现的,这个以后会讲到),其实最重要C++的流能更好的⽀持⾃定义类型对象的输⼊输出。在随后的⼏年中,C++在学术界和⼯业界的应⽤逐渐增多。
2024-08-02 16:28:43
827
10
原创 常用快捷键整理
用加粗标注的是我个人使用时常用的,其实这个全凭个人喜好)跳出执行当前执行点所处函数的剩余行。这样就不用先将光标移到行首或行尾了)查找上次搜索文本的下一个匹配项。查找上次搜索文本的上一个匹配项。将选定文本更改为小写字符。清除项目中的所有断点。删除插入点右侧的单词。将插入点移动到行尾。将插入点移动到行首。
2024-08-02 13:34:58
498
9
原创 动态内存管理
包含柔性数组成员的结构⽤malloc ()函数进⾏内存的动态分配,并且分配的内存应该⼤于结构的。当是情况2 的时候,原有空间之后没有⾜够多的空间时,扩展的⽅法是:在堆空间上另找⼀个合适。栈内存分配运算内置于处理器的指令集中,效率很⾼,但是分配的内。有时会我们发现过去申请的空间太⼩了,有时候我们⼜会觉得申请的空间过⼤了,那为了合理的。如果我们的代码是在⼀个给别⼈⽤的函数中,你在⾥⾯做了⼆次内存分配,并把整个结构体返回给。了,并返回给⽤⼾⼀个结构体指针,⽤⼾做⼀次free就可以把所有的内存也给释放掉。
2024-07-30 15:23:15
1271
24
原创 ⾃定义类型:结构体
如果传递⼀个结构体对象的时候,结构体过⼤,参数压栈的的系统开销⽐较⼤,所以会导致性能的下降。4. 如果嵌套了结构体的情况,嵌套的结构体成员对⻬到⾃⼰的成员中最⼤对⻬数的整数倍处,结构。答案是不⾏的,因为Node是对前⾯的匿名结构体类型的重命名产⽣的,但是在匿名结构体内部提。仔细分析,其实是不⾏的,因为⼀个结构体中再包含⼀个同类型的结构体变量,这样结构体变量的。不是所有的硬件平台都能访问任意地址上的任意数据的;⾥使⽤位段,能够实现想要的效果,也节省了空间,这样⽹络传输的数据报⼤⼩也会较⼩⼀些,对。
2024-07-23 15:59:52
1093
11
原创 教你如何手撕双向链表
带头链表⾥的头结点,实际为“哨兵位”,哨兵位结点不存储任何有效元素,只是站在这⾥“放哨的”注意:这⾥的“带头”跟前⾯我们说的“头结点”是两个概念,实际前⾯的在单链表阶段称呼不严。这就完成了一个双向链表,如有不懂欢迎私信博主 ,诚信在线为大家解答!谨,但是为了同学们更好的理解就直接称为单链表的头结点。注:需调用1.7的方法找到相应位置后方可插入节点。注:需调用1.7的方法找到相应位置后方可插入节点。指定位置之后插入节点。
2024-07-22 14:55:58
409
7
原创 字符函数和字符串函数
如果source 指向的字符串的⻓度⼩于num的时候,只会将字符串中到 \0 的内容追加到destination。错误码都是 有对应的错误信息的。的,C语⾔程序启动的时候就会使⽤⼀个全局的变量errno来记录程序的当前错误码,只不过程序启。动 的时候errno是0,表⽰没有错误,当我们在使⽤标准库中的函数的时候发⽣了某种错误,就会。将对应 的错误码,存放在errno中,⽽⼀个错误码的数字是整数很难理解是什么意思,所以每⼀个。C语⾔中有⼀系列的函数是专⻔做字符分类的,也就是⼀个字符是属于什么类型的字符的。
2024-07-20 14:26:36
805
10
原创 C语言指针详解(进阶)
正片开始 ,在上一篇当中我们已经介绍了指针的基本概念以及一些基本的用法,让我们一起。去探讨一下指针中更为深奥的知识,学会指针,编程从此不再害怕!7. 指向函数指针数组的指针。9. 指针和数组面试题的解析。4. 数组传参和指针传参。
2024-07-17 14:30:46
1259
12
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人