- 博客(12)
- 收藏
- 关注
原创 c++_继承详解
本文系统讲解了C++继承的核心概念与应用。主要内容包括:继承的基础语法(基类与派生类关系、访问权限控制);单继承和多继承的实现方式及内存布局;继承中的重定义(隐藏)问题;派生类与基类的六大默认成员函数处理;重点分析了菱形继承问题及其解决方案——虚继承(virtual inheritance)。通过代码示例和内存布局图解,详细说明了虚继承如何解决多继承中的二义性和数据冗余问题。文章对C++继承机制进行了全面而深入的剖析,是理解面向对象编程中继承特性的重要参考资料。
2025-11-21 22:30:00
652
原创 C数据结构 顺序表
本文介绍了顺序表的实现及其特点。顺序表是一种在逻辑和物理上都连续的数据结构,本质上是用结构体封装的数组。文章详细说明了顺序表的优缺点:适合快速查找和排序,但插入删除头部数据时效率较低,且存在空间浪费问题。通过C语言代码展示了顺序表的基本操作(初始化、增删改查、排序等),包括头尾插删、随机位置操作、查找和去重功能。顺序表与后续介绍的链表形成互补,适用于不同场景。代码实现中采用了动态扩容机制,通过realloc调整空间大小。
2025-10-26 23:20:41
416
原创 C可变参数列表详解
本文介绍了C语言中可变参数列表的实现原理和使用方法。首先说明可变参数列表通过"..."表示,以printf函数为例。文章详细解析了va_list、__crt_va_start、__crt_va_arg、__crt_va_end等宏的工作原理,通过函数栈帧解释了参数在内存中的布局方式。重点剖析了_INTSIZEOF(n)宏的数学原理,展示了如何将1-4字节类型提升为4字节,5-8字节提升为8字节。最后指出使用注意事项:传入参数会进行整型提升,float会转为double。文章通过数学推导和
2025-10-21 19:05:56
899
原创 C函数栈帧的创建和销毁,超级详细
本文摘要:文章详细讲解了程序地址空间(虚拟内存)的布局,重点介绍了函数栈帧在栈区的开辟与销毁过程。通过分析32位环境下的汇编代码,展示了main函数和MyAdd函数的栈帧创建、参数传递及返回值处理机制,包括寄存器操作(如ebp、esp)和常见汇编指令(mov、push、call等)。文中配有内存布局图示,帮助理解函数调用过程中栈空间的变化。
2025-10-20 23:27:37
914
原创 do-while-zero小技巧分享
本文介绍了宏定义中do-while-zero结构的使用技巧。该结构通过在宏定义中使用do{...}while(0)语法,实现了在宏中容纳多行代码的功能。相比普通函数,这种结构可以避免函数栈帧开销,但会增大代码体积且无法调试。文章分析了该结构的优缺点,强调应根据实际场景选择使用。代码示例展示了具体实现方式,并指出反斜杠作为续行符号的必要性。
2025-10-18 18:12:32
204
原创 C浮点型的比较方法
本文说明浮点型为什么会有精度丢失,并且如果精度丢失需要用什么样的方法去比较两个浮点型在介绍比较方法前,先介绍C库自带的两个宏DBL_EPSILON:double类型的精度损失范围FLT_EPSILON:float类型的精度损失范围。
2025-10-18 15:36:53
763
原创 联合体及位段在内存中的存储
本文详细介绍了C语言中联合体(union)和位段(bit-field)的内存存储方式及使用特性。联合体成员共享内存空间,大小由最大成员决定且需满足内存对齐要求,常用于判断大小端存储模式。位段允许按位分配成员空间,其存储方式会舍弃不足的空间并遵循内存对齐原则,主要应用于网络协议等需要精确控制数据位的场景。两者都能有效节省内存空间,但位段在不同编译环境下的实现可能有所差异。
2025-10-16 23:09:10
916
原创 C语言中的取余数详解
本文介绍了取整的四种方式(向上、向下、向零、四舍五入)及其对应的C语言函数(ceil、floor、trunc、round)。重点分析了C语言的取整特性(向零取整),并由此解释了取余(%)与取模的区别:取余采用向零取整,余数符号由被除数决定;取模采用向下取整。通过具体代码示例验证了C语言中取余运算的结果规律。
2025-10-15 20:55:35
881
原创 C static关键字详解
本文介绍了C语言中static关键字的定义、作用及使用方法。static关键字主要用于修饰局部变量、全局变量和函数,能够改变变量的生命周期和作用域。修饰局部变量时,将其存储位置从栈区改为静态区,延长生命周期;修饰全局变量和函数时,将外部链接属性改为内部链接属性,限制作用域至当前文件,增强代码封装性和安全性。通过实例代码展示了不同场景下static的应用效果,总结其本质是改变变量存储位置和链接属性,从而提高代码健壮性。
2025-10-14 00:33:54
935
原创 const关键字详解
如以上代码,const放在int前和int后的效果是一样的都是修饰变量名,直接赋值修改编译器会直接报错,但是我以上说的是不可以直接修改,那么可以间接修改吗?那我直接通过指针来修改可以吗,答案是可以的!!!
2025-10-12 21:32:46
377
原创 各种数据类型在虚拟内存中的存储方式
本文系统介绍了数据在计算机内存中的存储方式。主要内容包括:1.进制转换基础,阐述二进制、十进制、十六进制的相互转换;2.原码、反码、补码的概念及转换规则,说明计算机采用补码存储的原因;3.大小端存储模式的定义与区别;4.整型和浮点型数据的存储机制,重点分析有符号数与无符号数的处理差异;5.自定义类型(数组、结构体等)的内存对齐规则;6.指针变量的本质及其内存表示。文章通过具体实例详细演示了各类数据在内存中的实际存储形式,揭示了数据类型本质上是看待内存数据的视角这一核心观点。
2025-10-12 14:01:51
899
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅