- 博客(52)
- 收藏
- 关注
原创 C++ 内存管理
摘要:本文介绍了C/C++程序的内存区域划分和动态内存管理机制。内存分为内核空间、栈、堆、数据段和代码段等区域。C语言通过malloc/calloc/realloc/free函数管理堆内存,而C++的new/delete操作符还能处理对象构造和析构。详细解析了operator new/delete的实现原理,以及定位new表达式在内存池中的应用。对于自定义类型,new/delete会调用构造/析构函数,这是与malloc/free的主要区别。文章还介绍了内存管理的底层实现机制和重载方法。
2026-01-17 22:35:22
897
原创 C语言指针进阶
本文介绍了C语言中指针的高级应用:1.字符指针可指向字符变量或字符串常量;2.指针数组是元素为指针的数组;3.数组指针指向整个数组,与普通指针在运算时有区别;4.数组传参时一维数组可用数组或指针形式,二维数组需指定列数或用数组指针;5.函数指针存储函数地址,可通过两种方式调用函数。文中还强调了数组名与取数组地址的区别,以及指针在内存访问中的特性。这些概念对理解C语言内存管理和函数调用机制至关重要。
2026-01-17 17:59:02
458
原创 C++ 类和对象(完)
本文探讨了C++中构造函数的初始化方式、静态成员、友元和内部类等特性。构造函数推荐使用初始化列表,尤其对于引用、const成员和自定义类型;explicit关键字可防止隐式转换。静态成员属于类而非对象,需在类外定义,静态函数无this指针。友元函数和友元类可突破封装访问私有成员,但会破坏封装性。内部类是独立类,天生是外部类的友元,可直接访问外部类的静态和私有成员。这些特性在提高代码灵活性的同时,也需谨慎使用以保持良好封装。
2026-01-16 23:00:44
584
原创 C++ 类与对象(二)
C++编译器会为空的类自动生成6个默认成员函数,包括构造函数、析构函数、拷贝构造函数、赋值运算符重载以及取地址重载函数。构造函数用于初始化对象,析构函数负责资源清理,拷贝构造函数实现对象复制,赋值运算符重载处理对象赋值。其中,拷贝构造函数必须使用引用参数以避免无限递归。const成员函数通过修饰this指针保证不修改对象状态。这些默认函数对内置类型和自定义类型有不同的处理方式,开发者应根据需要选择是否显式实现这些函数,特别是涉及资源管理时需要特别注意深拷贝问题。
2026-01-16 09:00:00
1293
原创 C++类与对象(一)
本文对比了C语言(面向过程)与C++(面向对象)的核心差异,重点介绍了C++类的特性。面向过程关注解决问题的步骤,而面向对象通过对象交互完成任务。文章详细讲解了类的定义方式(struct到class的演进)、访问限定符(public/protected/private)及封装特性。同时阐述了类的作用域、实例化过程以及对象内存模型(仅成员变量占用空间,空类占1字节)。最后深入解析this指针的原理及其特性,通过实例说明空指针调用成员函数时的不同表现。这些内容构成了C++面向对象编程的基础知识体系。
2026-01-16 02:57:29
759
原创 Linux指令和权限
本文介绍了Linux系统常用命令及权限管理。基础操作包括:目录查看(ls)、路径切换(cd)、文件创建(touch)与删除(rm)、复制移动(cp/mv);文件内容查看工具(cat/less/head/tail);时间(date)、帮助(man)等辅助命令。重点讲解了权限系统:文件属性(-rwxr-xr--)、用户角色(root/普通用户)、权限修改(chmod/chown)方法,特别说明目录写权限的特殊性及粘滞位(+t)的作用。同时涉及查找命令(find/grep)和默认权限计算(umask)机制。全文系
2026-01-14 22:50:09
635
原创 C语言数据存储
摘要:C语言数据类型包括整型(char,short,int等)、浮点型(float,double)、构造类型(数组,结构体等)、指针类型和空类型(void)。整型采用补码存储,便于统一处理符号位和加减运算。数据存储涉及大小端模式:大端高位在前,小端低位在前(如x86)。浮点数遵循IEEE754标准,存储符号位S、有效数字M(隐含首位1)和指数E(需加偏置值)。32位float为1+8+23位,64位double为1+11+52位。
2026-01-09 20:50:58
350
原创 C++ 入门知识点
C++相较于C语言新增了31个关键字,总数达63个,主要用于支持面向对象、泛型编程等特性。关键改进包括:命名空间解决命名冲突;更安全的输入输出机制;缺省参数和函数重载提升灵活性;引用作为安全别名替代指针;内联函数优化性能;auto关键字简化类型声明;基于范围的for循环增强迭代;nullptr明确空指针语义。这些特性使C++在保持C兼容性的同时,显著提升了代码安全性、可读性和开发效率,特别适用于大型软件开发。
2026-01-06 16:39:06
751
原创 C语言结构体
本文介绍了结构体的基础知识与使用方法。主要内容包括:1)结构体声明语法及注意事项;2)变量的两种定义方式和初始化方法(普通初始化和嵌套初始化);3)结构体成员的访问方式(点操作符和箭头操作符);4)结构体传参时的注意事项,强调在处理大型结构体时应优先使用传址方式而非传值,以减小系统开销提升性能。文章系统性地讲解了结构体的基本概念、定义初始化、成员访问和传参优化等核心知识点。
2026-01-05 21:01:25
387
原创 C语言指针
本文系统介绍了指针的核心概念与应用。首先明确了指针的本质是内存地址,其大小随机器位数变化(32位4字节,64位8字节)。其次详细解析了指针类型的两大意义:决定解引用访问的字节数和指针运算的步长。接着探讨了野指针的成因及防范措施,并阐述了指针与数组的密切关系(数组名即首元素地址)。此外,还介绍了二级指针的概念和指针数组的定义。全文通过清晰的逻辑结构,全面呈现了指针在内存操作中的关键作用和使用规范。
2026-01-05 18:21:19
294
原创 C语言操作符
本文总结了C语言中各类操作符的使用规则和注意事项,包括算术、移位、位、赋值、单目、关系、逻辑等操作符。重点介绍了除法/取模规则、移位操作类型、位操作应用、复合赋值、自增自减顺序、关系判断陷阱、逻辑短路特性等关键知识点。同时讲解了表达式求值中的整型提升、算术转换原则,以及操作符的优先级和结合性。特别强调要避免未定义行为,如负移位、复杂表达式求值顺序等问题。这些操作符规则是C语言编程的基础,正确理解对编写可靠代码至关重要。
2026-01-05 14:16:34
377
原创 C语言函数
摘要:函数是完成特定任务的独立代码块,分为库函数和自定义函数。库函数通过头文件调用,自定义函数由程序员编写。函数参数包括实参和形参,形参是实参的临时拷贝。函数调用有传值和传址两种方式。函数可嵌套调用但不能嵌套定义,支持链式访问。函数需先声明后定义,递归函数需有终止条件,但效率可能低于迭代。
2026-01-04 14:18:28
354
原创 C语言分支与循环
摘要:C语言控制语句分为分支(if/switch)、循环(while/for/do-while)和转向(break/goto等)三类。if语句需注意else匹配最近if的规则;switch要求整型表达式且必须用break避免穿透。三种循环中for最常用,将初始化、判断和调整集中处理。break终止整个循环,continue跳过本次循环。goto可用于跳出多层嵌套循环。C语言中0为假,非0为真,这是判断语句的基础逻辑。
2026-01-04 00:38:51
443
原创 【C++】初阶模板
当我们要实现一个交换函数的时候,以我们现在的水平要实现一个很简单,但是我们是实现的函数仅仅可以对对指定类型进行交换,假设我们要实现一个int类型,我们就要写一个支持int类型更换的函数,只要类型一换我们就要重新写一个,而且重新写一个的底层逻辑基本是一样,这样就会造成我们的代码很冗余。而今天我们要讲的内容就很好的解决了这个问题——模板。
2023-12-05 19:38:38
772
原创 【C++】C/C++内存管理
①调用operator new函数申请空间;②在申请空间上执行构造函数,完成对象构造。①在空间上执行析构函数,完成对象资源清理工作;②调用operator delete函数释放空间。①调用operator new[]函数申请空间,operator new[]中实际调用operator new函数完成N个对象空间的申请;②实际调用了N次构造函数。①在释放的对象空间上执行N次析构函数,完成N个对象中资源的清理;
2023-12-04 20:16:07
1160
原创 【C++】类和对象(中下)
文章到这,我们关于类的六个默认成员函数已经介绍完了,也是构造函数,析构函数,拷贝构造函数,赋值运算符重载,const成员函数,取地址及const取地址操作符重载。
2023-09-15 23:22:56
463
原创 【数据结构】堆的应用——Top-K
上篇文章我们学习了二叉树的顺序存储结构,并且对于实际使用中所常用的顺序存储结构——堆的各个接口进行实现。这篇文章我们将对堆的实际应用进行更加深入的研究。到这里,我们今天关于Topk问题的研究就全部结束了,难度不大,最主要是结合具体情况,选择最合适的方法建堆。
2023-07-16 00:20:06
2197
3
原创 【数据结构】树与二叉树(中)
上篇文章中,我们认识了树与二叉树相关概念以及两种常见的存储结构,而今天我们将对顺序存储结构进行实现的讲解。这篇文章我们完整的认识、了解、学习了二叉树顺序存储结构的相关知识,并且对二叉树顺序存储进行实现——堆的各接口实现。至此,关于二叉树的顺序存储的知识我们就全部学习完毕了。
2023-07-14 16:24:20
796
1
原创 【数据结构】树与二叉树(上)
我们已经学习了顺序表和链表的相关知识点,并且我们也通过结合相关知识,实现了对栈和队列各项接口功能的实现。而今天开始,我们将进入树与二叉树的学习,介绍它们的相关概念、结构与使用的相关知识。这篇文章中,主要介绍和讲解树和二叉树的相关概念与结构。到这里,我们对树与二叉树有了一个认识,对二叉树的两种存储结构也有了一定的了解。本文中理论和概念的知识较多,只有将这些概念理解吸收,才能顺利的进入后面更加晦涩的知识学习。
2023-07-14 02:23:29
868
原创 【C++】类和对象(中上):类的六个默认成员函数——构造函数、析构函数、拷贝构造函数!
上一篇文章我们浅浅的了解类与对象,知道了如何定义一个类,而今天我们更加深入的了解类与对象,也就是了解类的六个默认成员函数。接下来让我们进入学习。初学者对于构造函数,析构函数,拷贝构造函数时一大难点,所以需要下去多练习多思考。
2023-05-24 23:15:50
1643
4
原创 【C++】C++入门
上一篇文章我们认识C++的关键字、命名空间、C++输出和输入、缺省参数、函数重载、引用,今天我们接着继续学习;到此我们C++入门就算学完了,C++入门所讲解的都是针对C语言的缺陷进行改进,更多的是语法,会比较枯燥,需要大家动手去练习熟悉它们。
2023-05-17 23:11:16
650
4
原创 [C++]C++入门(一)
今天开始我们就进入C++学习。C++是在C的基础上,容纳进去了面向对象编程思想,并增加了许多有用的库,以及编程方式等等。所以说C++跟C语言有很大的关系,一般情况下学C++前都需要先学C语言。可以说C++就是补充了C语言语法的不足之处。本次讲解的都是从C语言过度到C++所改进的一些东西,这些东西更加偏向于语法,可能会有点抽象,需要大家反复理解。
2023-05-09 01:28:33
749
2
原创 【数据结构】解析队列各接口功能实现
在上一章中我们使用数组实现了数组栈各接口功能的实现,对各接口的原理和工作方式有了一定了解,而今天,在这节课我们将使用链表来实现队列的相关接口功能。现在我们进入今天的学习。队列是一种特殊的线性表,它允许在表的的前端进行删除,而在表后端进行插入操作,也就是先进先出。它和栈一样,队列也是一种操作说限制的线性表。进行插入操作的一端称之为队尾,进行删除操作的端称之为对头。队列的元素又叫队列元素。在队列中插入一个队列元素称之为入队,从队列中删除一个队列元素称之为出队。
2023-04-15 23:30:33
578
14
原创 【数据结构】栈各个接口的实现
前面我们已经学习了顺序表和链表的相关知识和对各个接口实现,而今天我们将对栈进行学习。今天对栈的实现到此就结束,分别讲解栈的概念和栈接口的实现,我今天使用数据实现栈,大家理解完之后,可以尝试使用链表实现,帮助自己更好的理解和使用栈的相关操作。文章仍有许多不足,欢迎大家私信交流。
2023-04-11 01:28:38
627
14
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅