自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 收藏
  • 关注

原创 C++ 语法——C++11异常

摘要:本文介绍了C++异常处理机制的基本概念和使用方式。异常处理将问题检测与解决分离,相比C语言错误码更全面。主要内容包括:1)异常通过throw抛出对象,由匹配的catch捕获处理;2)栈展开过程描述异常沿调用链向上查找处理程序;3)异常匹配规则允许类型转换;4)异常可重新抛出给外层处理;5)C++标准库提供了exception基类及其继承体系,建议主函数捕获exception基类并调用what()获取错误信息。异常处理机制使程序能更优雅地处理运行时错误。

2026-06-25 14:42:52 245

原创 C++11 ——智能指针

C++11智能指针完全指南摘要:C++11引入的智能指针(unique_ptr、shared_ptr、weak_ptr)提供了自动内存管理机制,有效防止内存泄漏。unique_ptr实现独占所有权,禁止复制但支持移动;shared_ptr通过引用计数支持共享所有权;weak_ptr作为观察者解决循环引用问题。最佳实践包括优先使用make_shared/make_unique、避免混合使用智能指针和裸指针、根据场景选择合适的指针类型。智能指针显著提高了代码安全性和可维护性,是现代C++内存管理的核心工具。

2026-06-24 19:11:39 193

原创 C++ 语法—— C++11 常用特性(下)

文章摘要: 本文介绍了C++11中的三个重要新特性:可变参数模板、新的类功能和lambda表达式。可变参数模板支持参数包(模板参数包和函数参数包),通过包扩展和emplace接口实现灵活的参数处理。新的类功能包括默认移动构造/赋值、成员变量缺省值初始化以及default/delete控制默认函数生成。lambda表达式提供了匿名函数的简洁语法,通过捕捉列表可访问外部变量,支持参数传递和返回值类型推导。这些特性显著提升了C++的灵活性和表达力,使代码更简洁高效。

2026-06-24 19:02:41 323

原创 C++ STL—— stack 和 queue

本文介绍了C++ STL中的stack和queue两种容器适配器。stack遵循后进先出(LIFO)原则,默认基于deque实现,支持push、pop和top操作,常用于表达式求值、递归模拟等场景。queue遵循先进先出(FIFO)原则,同样基于deque实现,支持push、pop、front和back操作,适用于BFS、任务调度等场景。文章对比了二者的特性、操作方法和使用场景,并提供了代码示例演示其基本用法。这两种容器适配器虽然功能单一,但能简化特定场景下的代码逻辑,提高效率。

2026-03-29 23:05:19 627

原创 C++STL—— list

摘要: C++ STL中的std::list是基于双向链表实现的容器,具有高效的插入/删除操作(O(1)),但不支持随机访问。其核心特性包括指针链接结构、迭代器遍历方式,以及独有的splice操作(常数时间移动元素)。相比vector和deque,list更适合频繁中间修改的场景,如LRU缓存实现。典型应用还包括事件队列管理和图的邻接表存储。选择容器时应根据需求权衡:list擅长元素增删,vector适合随机访问,而deque则优化了双端操作。

2026-03-28 22:47:43 349

原创 C++ 语法—— C++11 常用特性(上)

摘要:本文介绍了C++11中的两大特性:列表初始化和右值引用。列表初始化通过{}统一初始化方式,支持内置和自定义类型,并引入std::initializer_list简化容器初始化。右值引用通过移动语义解决资源拷贝问题,包含移动构造函数/赋值运算符的实现方法,以及std::move的使用。文章还探讨了完美转发、万能引用等高级特性,并对比了左值/右值引用的适用场景,最后指出了悬空引用等常见陷阱。这些特性显著提升了C++的资源管理效率和代码简洁性。

2026-03-19 10:29:04 606

原创 C++ STL-- vector

Vector 是 C++ 开发中最基础也是最强大的工具。掌握它不仅是编写高效代码的基础,更是理解 C++ 内存管理和 STL 设计哲学的关键一步。

2026-03-12 22:38:20 536

原创 掌握C++ string类的常用函数

本文系统介绍了C++中std::string类的核心功能,包括构造与赋值、容量管理、字符访问、字符串操作等常用成员函数。重点讲解了字符串构造、查找(find)、提取(substr)、修改(insert/erase/replace)等操作,并强调了reserve()和shrink_to_fit()对性能的优化作用。此外还介绍了迭代器接口和流操作,展示了std::string与STL算法的兼容性。掌握这些函数能有效提升字符串处理代码的安全性和效率。

2026-03-09 21:14:34 466

原创 【无标题】

本文介绍了C++中两种多态类型:静态多态(编译时通过函数重载实现)和动态多态(运行时通过虚函数实现)。重点解析了动态多态的底层机制,包括虚函数、虚表(VTable)和虚指针(VPtr)的工作原理,并通过乐器类示例展示了多态的实际应用。文章还提供了最佳实践建议,如使用虚析构函数、避免在构造函数中调用虚函数等。C++多态机制通过运行时动态绑定提升了代码的灵活性和可扩展性,但需注意其带来的性能开销。

2026-03-08 19:32:16 347

原创 C++ 语法——继承(下)

fill:#333;important;important;fill:none;color:#333;color:#333;important;fill:none;fill:#333;height:1em;BaseDerived1Derived2在这个结构中,类既继承了Derived1,又继承了Derived2,而Derived1和Derived2又都继承自同一个Base类。这就导致类中同时拥有了两个Base类的子对象。

2026-03-07 21:42:52 538

原创 C++ 语法——继承(上)

本文介绍了面向对象编程中继承机制的核心概念与应用。继承允许派生类在保持基类特性的基础上进行扩展,提高代码复用性。文章详细讲解了三种继承方式(public/protected/private)对成员访问权限的影响,演示了基类与派生类之间的赋值转换规则(派生类对象可赋给基类指针/引用,反之不可)。同时指出继承体系中作用域的处理方式,当出现同名成员时会产生隐藏现象,可通过作用域运算符显式访问基类成员。最后通过类模板示例展示了继承在实际编程中的应用场景。

2026-03-06 21:32:05 659

原创 C++ 语法——模板(下)

本文介绍了C++模板编程中的非类型模板参数和模板特化两大特性。非类型模板参数允许使用常量作为模板参数,但限制只能使用整型等编译期可确定的类型。模板特化分为函数模板特化和类模板特化,用于处理特殊类型的情况。函数模板特化需先定义基础模板,再针对特定类型实现特化版本。类模板特化包括全特化(所有参数确定)和偏特化(部分参数确定或参数限制),偏特化可针对指针、引用等特殊类型进行优化处理。这些特性增强了模板的灵活性,使其能更好地适应不同场景的需求。

2026-03-05 19:46:54 595

原创 C++语法——类和对象(三)

本文系统介绍了C++中的关键特性:1) 初始化列表比构造函数体内赋值更高效,且是const成员、引用成员等特殊变量的唯一初始化方式;2) 四种类型转换操作符(static_cast、dynamic_cast等)的安全使用场景;3) 友元机制如何突破封装限制;4) 内部类的作用域特性及其与外部类的访问关系;5) 匿名对象的临时性特点及适用场景。文章通过代码示例和底层原理分析,帮助读者深入理解C++对象模型的核心机制与高级特性。

2026-03-04 18:22:21 795

原创 C ++语法——模板(上)

本文介绍了C++中模板的基本概念和使用方法。主要内容包括:1)函数模板的定义格式和原理,通过模板参数实现类型无关的函数家族;2)函数模板实例化的两种方式:隐式实例化(编译器自动推导类型)和显式实例化(手动指定类型);3)类模板的定义格式和实例化方法,强调类模板名不是真正的类,需要通过实例化生成具体类型。文章通过swap函数和Stack类的具体示例,展示了模板在代码复用中的实际应用价值。

2026-03-02 12:04:18 669

原创 C++语法——类和对象(二)

本文简要介绍了构造函数和析构函数,并详细介绍了运算符重载的相关知识。

2026-03-01 15:38:13 801

原创 C++ ——内存管理

本文介绍了C++中的动态内存管理方式new/delete操作符,对比了C语言的malloc/free函数。new/delete不仅支持内置类型的内存分配,还会为自定义类型调用构造函数和析构函数。文章详细分析了operator new/delete的底层实现原理,以及new[]/delete[]处理对象数组的机制。最后通过表格对比了malloc/free与new/delete在初始化、类型安全、异常处理等方面的主要区别,帮助开发者更好地理解和使用这两种内存管理方式。

2026-02-28 15:28:31 826

原创 C++ 语法——类和对象(一)

本文介绍了C++中类的定义方式,包括类的基本格式、访问限定符(public/private/protected)的作用和类域概念。通过Date类示例说明了成员变量和成员函数的定义,以及类实例化对象的过程。文章还讲解了对象内存大小的计算规则和内存对齐原则,并详细解释了this指针的底层实现机制,展示了编译器如何通过this指针区分不同对象的成员访问。最后总结了类定义、实例化和this指针等核心概念。

2026-02-27 14:59:47 854

原创 C++ 语法——入门基础

本文介绍了C++中的几个核心特性:命名空间用于避免标识符冲突,可通过三种方式访问;输入输出流使用iostream头文件中的cin、cout等函数;缺省参数分为全缺省和半缺省,需遵循特定规则;函数重载允许同名函数参数不同;引用是变量的别名,常用于传参和返回值;nullptr解决了C++中空指针定义的问题。这些特性增强了C++的灵活性和安全性。

2026-02-24 22:17:40 937

原创 C 语言入门——编译、链接和预处理

这篇博客详细解析了C语言从源代码到可执行文件的完整编译过程,主要分为预处理、编译、汇编和链接四个阶段。预处理阶段处理宏定义、头文件包含和条件编译;编译阶段进行词法、语法分析和代码优化,生成汇编代码;汇编阶段将代码转换为机器指令;链接阶段合并目标文件和库文件,解析符号并生成可执行文件。文章还介绍了常用编译指令,帮助开发者查看各阶段中间文件。通过理解这些底层机制,开发者能更高效地调试和优化C程序。

2026-02-22 21:14:03 804

原创 C 语言——文件操作

本文系统介绍了文件操作的基础知识。文件是存储数据的最小逻辑单位,分为文本文件(可读字符)和二进制文件(原始数据)。操作文件需先打开后关闭,通过文件指针控制读写位置。文件读写包括顺序读写(依次操作)和随机读写(定位操作),需注意文件结束判定。掌握文件操作技术是数据处理和系统编程的重要基础。

2026-02-18 19:48:44 772

原创 C 语言——动态内存管理

本文介绍了C语言动态内存分配的相关知识。主要内容包括:1)动态内存分配的必要性,传统固定大小数组的局限性;2)malloc和free函数的使用方法及注意事项;3)calloc和realloc函数的特点与用法,calloc会初始化内存,realloc可调整内存大小;4)常见的动态内存使用错误,如空指针解引用、越界访问、错误释放等。文章通过代码示例详细说明了各函数的正确使用方法,并强调了内存泄漏等常见问题的防范措施。

2026-02-17 16:33:38 1216

原创 C 语言——自定义类型:联合和枚举

本文介绍了C语言中两种自定义类型:联合体和枚举。联合体通过共享内存空间来节省内存,适用于不同类型数据共用同一存储区域的场景,并通过礼品兑换单案例展示了其实际应用。枚举类型用于定义一组命名的整数常量,相比#define更具可读性和类型安全性,便于调试和维护。文章通过示例代码详细说明了联合体和枚举的声明、特点及使用方法,突出了它们在内存优化和代码规范性方面的优势。

2026-02-16 20:54:46 688

原创 C 语言——自定义类型:结构体

本文介绍了C语言中结构体的基本概念和使用方法。主要内容包括:1)结构体的声明语法,展示了一个学生结构体的示例;2)结构体变量的创建和初始化方式,包括顺序初始化和指定成员初始化;3)结构体成员的访问操作符(.和->)的使用;4)结构体作为函数参数的两种传递方式(传值和传地址),并分析传地址方式的优势。文章通过代码示例详细说明了结构体的各种操作,为C语言中结构体的使用提供了基础指导。

2026-02-15 20:56:55 496

原创 C 语言——内存函数

本文介绍了C语言中四种常用的内存操作函数:memcpy用于内存复制,不检查重叠;memmove处理内存重叠时的复制;memset按字节设置内存值;memcmp比较内存区域内容。通过代码示例展示了各函数的用法,并提供了memcpy的模拟实现。这些函数为内存操作提供了高效便捷的方法,是C语言编程的重要工具。

2026-02-14 20:47:18 51

原创 C 语言——字符串函数模拟实现

本文介绍了四种C语言字符串处理函数的模拟实现方法:1. strlen函数通过计数器或指针减法计算字符串长度;2. strcpy函数通过指针操作实现字符串复制;3. strcat函数先定位目标字符串末尾再追加源字符串;4. strcmp函数通过字符比较判断字符串大小关系。所有实现均包含安全检查机制,如NULL指针检测、断言等,体现了防御性编程思想。文章通过代码示例和详细注释,展示了这些核心字符串函数的底层实现原理和注意事项。

2026-02-13 20:05:04 863

原创 C 语言——字符函数和字符串函数

本文介绍了C语言中常用的字符函数和字符串函数。字符函数包括字符分类函数(如islower判断小写字母)和字符转换函数(如tolower转小写字母),需包含ctype.h头文件。字符串函数则包含strlen计算字符串长度、strcpy字符串拷贝、strcat字符串拼接和strcmp字符串比较等功能,这些函数需要string.h头文件,使用时需注意字符串必须以'\0'结尾且目标空间足够大。这些函数为C语言字符串处理提供了基础支持。

2026-02-12 21:43:17 722

原创 C 语言——深入理解指针(三)

本文详细介绍了C语言中三种指针类型:字符指针、数组指针和函数指针。字符指针指向字符或字符串,字符串字面量存储在只读区,需注意修改限制;数组指针指向整个数组,需区分指针数组概念;函数指针用于回调函数和多态性,建议使用typedef简化。文章通过代码示例说明各指针的定义、使用场景和注意事项,帮助读者理解指针的核心概念及其应用。掌握这些指针类型对编写高效安全的C代码至关重要。

2026-02-09 19:34:17 993

原创 C 语言入门——深入理解指针(二)

本文介绍了C语言中指针与数组的关系及应用。主要内容包括:1)数组名本质上是首元素地址,可通过指针访问数组元素;2)一维数组传参时退化为指针;3)二级指针用于修改指针本身或动态内存分配;4)指针数组可存储多个指针,常用于模拟二维数组或管理字符串。文章通过代码示例展示了指针访问数组的等价性、二级指针的内存分配应用,以及指针数组模拟二维数组的实现方法,强调指针是C语言中灵活高效的数据操作工具。

2026-02-08 22:06:20 465

原创 C 语言入门——深入理解指针(一)

本文系统介绍了C语言指针的核心概念与应用。首先阐述了指针的基础知识,包括内存地址、指针变量声明与初始化方法。其次详细解析指针类型的意义及其运算规则,包括指针算术和void*指针的使用。然后重点讨论了const修饰指针的三种方式及野指针的成因与防护措施。最后通过数组遍历、字符串处理和传址调用等实例展示了指针的实际应用。全文强调指针的高效性与潜在风险,指出合理使用指针和防止野指针是编写健壮C程序的关键。

2026-02-07 20:53:13 673

原创 C 语言入门——函数递归

摘要:递归是函数调用自身的过程,通过将复杂问题分解为相似子问题来解决。有效的递归必须满足终止条件和问题规模递减两个核心条件。与迭代相比,递归代码更简洁但效率较低且可能栈溢出,适用于树形结构遍历等问题;迭代则通过循环实现,效率更高但代码可能冗长。实际应用中应根据问题特点和性能需求选择合适方法,某些递归(如尾递归)可转化为迭代优化。递归体现了"分治法"思想,但需注意合理使用以避免内存问题。

2026-02-06 21:45:56 627

原创 C 语言入门——函数

本文摘要: C语言函数分为库函数和自定义函数,库函数由标准库提供,自定义函数需自行设计。函数通过返回值传递结果,参数分为形参(临时拷贝)和实参(实际值)。数组作为参数传递时形参和实参共享内存空间。函数调用包括嵌套调用和链式访问两种方式。在多文件工程中,函数定义分配内存而声明仅作类型检查,头文件需使用守卫防止重复包含,static函数可限制作用域。合理运用这些特性能提高代码复用性和模块化程度。

2026-02-05 20:27:27 924

原创 C语言入门——数组

本文系统介绍了C语言数组的核心概念和使用方法。主要内容包括:一维数组的创建、初始化和访问方式,重点讲解了元素访问、遍历及输入输出操作;二维数组的行列定义、多种初始化方法及其内存布局特点;还介绍了C99变长数组的特性与限制。文章通过大量代码示例演示了数组的常见操作技巧,如自动计算长度、防止越界访问等,并强调了一维数组的连续存储特性和二维数组的行优先存储原则,为后续指针操作奠定基础。最后指出变长数组的实际工程替代方案。

2026-02-04 17:25:35 949

原创 C 语言入门——控制与循环

本文系统介绍了C语言的逻辑运算、条件判断和循环结构。主要内容包括:1)关系运算符和逻辑运算符的使用规则;2)if、switch等分支语句的语法特点;3)while、for、do-while三种循环结构的区别与转换;4)流程控制关键字break、continue和goto的适用场景。重点需要掌握if条件判断、for循环的基本语法,理解逻辑运算符的短路特性,并合理使用break控制循环流程。这些基础知识是编写结构化C程序的关键。

2026-02-03 20:08:45 916

原创 C 语言入门—— C 语言数据类型和变量

本文系统介绍了C语言的核心概念,包括数据类型、变量和基本I/O函数。主要内容包括:1)数据类型的分类(字符型、整型、浮点型、布尔型)及其长度计算方法;2)变量的定义、分类(局部/全局变量)和基本操作(运算、赋值、自增自减);3)标准输入输出函数printf和scanf的使用方法及注意事项。文章重点阐述了不同数据类型的特性及变量的基本操作,为C语言初学者提供了基础语法参考。

2026-02-02 21:26:52 872

原创 C语言入门——C语言常见概念

本文介绍了 C 语言的基础知识,包括第一个 "Hello World" 程序解析、main函数的作用、库函数和 printf 的使用方法。详细讲解了 C 语言的关键字分类、字符/字符串与 ASCII 编码的关系、常用转义字符及其功能。还说明了五种语句类型(空语句、表达式语句、函数调用语句、复合语句和控制语句)以及两种注释方式(/**/多行注释和//单行注释)。这些内容为学习 C 语言编程提供了必要的基础概念框架。

2026-02-01 20:49:47 1042 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除