自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【C++修炼】二叉搜索树

本文系统介绍了二叉搜索树(BST)的核心概念、基本操作与实现。首先阐述了BST的定义与性质,分析了其最优(O(logN))与最差(O(N))情况下的性能。随后详细讲解了BST的插入、查找与删除算法,并提供了完整的C++代码实现。文章进一步探讨了BST的两种典型应用场景:仅用于判断元素是否存在的key搜索,以及可存储键值对并支持值修改的key/value搜索,并通过英译中字典和词频统计实例加以说明。最后,针对动态内存管理,深入讨论了BST的拷贝构造、析构及赋值运算符重载等关键问题。全文结合图示与代码示例,旨在

2026-11-05 11:49:44 294

原创 【Linux修炼】环境变量、进程地址空间

本文系统讲解进程地址空间与环境变量机制。进程地址空间是虚拟内存概念,通过页表实现虚拟地址到物理地址的映射,保障进程独立性与内存安全;环境变量是全局参数,由bash进程维护,用于路径查找(如PATH)、用户信息(如HOME、USER)及程序行为控制,可通过env、echo、getenv等方法获取。二者均在进程创建时由父进程继承,体现进程间数据传递与系统配置管理的统一逻辑。

2026-11-05 11:45:21 173

原创 【C++修炼】面向对象—多态

文章摘要 多态是面向对象编程的核心特性,分为静态多态(如函数重载、模板)和动态多态(运行时多态)。动态多态通过虚函数和继承实现,需满足两个条件:1. 被调用的函数是虚函数且子类完成重写;2. 通过父类指针或引用调用虚函数。虚函数表(vtable)存储虚函数地址,对象通过虚表指针访问对应函数,实现运行时动态绑定。纯虚函数(=0)定义抽象类,强制子类重写。析构函数需声明为虚函数以确保正确释放资源。C++11引入override和final关键字增强多态安全性。多态原理涉及虚表机制,虚表通常存储在常量区,通过动态

2026-11-02 16:48:47 254

原创 【Linux修炼】冯诺依曼体系、操作系统、系统调用、进程、进程状态、进程优先级、进程切换、调度算法

冯诺依曼体系结构将计算机分为输入、内存、CPU、输出四部分,数据在设备间通过内存流动。程序需加载至内存才能运行,因CPU仅与内存交互。操作系统作为软硬件桥梁,管理进程、内存、文件与设备,通过系统调用提供安全接口。进程是运行中的程序,由PCB(task_struct)和代码数据组成,状态包括运行、阻塞、僵尸等。进程切换依赖寄存器上下文保存与恢复,调度算法基于优先级与时间片实现。内存用于平衡速度与成本,避免外设拖慢整体效率。整个体系以“先描述,再组织”为核心,支撑现代计算与互联网发展。

2026-11-02 16:46:49 117

原创 【C++修炼】STL容器—stack与queue

本文系统介绍了C++中的栈(stack)与队列(queue)两种容器适配器。主要内容包括:1. 基本概念:栈遵循LIFO原则,队列遵循FIFO原则,均属于容器适配器而非独立容器,默认基于deque实现;2. 应用实例:通过LeetCode等OJ题目(如最小栈、栈序列验证、用栈实现队列、二叉树层序遍历)演示实际使用方法;3. 底层实现:详细解析适配器模式原理,说明如何基于vector/list等容器实现stack和queue,分析deque作为默认容器的优缺点;4. 扩展内容:介绍优先队列(priority_

2026-10-27 21:33:02 371

原创 【Linux修炼】包管理器yum/apt、编辑器Vim、编译器gcc/g++、自动化编译makefile、版本控制器Git、调试器GDB/CGDB

Linux软件安装推荐使用包管理器(如yum、apt),可自动解决依赖与版本兼容问题,避免手动安装的复杂性。安装本质是将软件拷贝至系统指定目录,需root权限。包管理器相当于“应用商店”,通过社区镜像源下载并管理软件,国内用户可通过切换镜像源提升下载速度。配合vim编辑器、gcc编译器、make构建工具及gdb调试器,可高效完成开发全流程。

2026-10-27 17:25:40 310

原创 【Linux修炼】初识:文件、打包和压缩、shell、用户与权限管理

本文系统介绍了文件与目录的基本概念,强调Linux中“一切皆文件”的理念,涵盖路径结构、权限管理(拥有者、所属组、other)、权限位(rwx)及umask对默认权限的影响。重点解析了目录权限规则:进入需x权限,查看需r权限,新建/删除文件需w权限。通过su、sudo实现用户切换与提权,保障多用户隔离与安全。介绍共享目录的粘滞位(t)机制,防止非拥有者随意删除文件,典型应用如/tmp目录。同时讲解打包压缩(tar、zip)、重定向、Shell工作原理及文件操作本质,揭示操作系统内核与外壳程序的协作关系。

2026-10-19 10:43:04 147

原创 【C++修炼】STL容器—list

本文详细介绍了C++ STL中的list容器,包括其底层实现、使用方法及模拟实现。list基于双向循环链表,支持高效插入/删除但不支持随机访问。文章涵盖了list的构造函数、容量操作、元素访问、迭代器分类、修改操作及特定算法(如reverse、sort、merge等),并通过代码示例展示了实际应用。最后通过性能测试对比了list::sort和std::sort的效率差异,并提供了list核心接口的模拟实现代码,包括结点类、迭代器类和list类模板的实现。

2026-10-19 09:35:42 357

原创 【C++修炼】STL容器—vector

本文系统介绍了C++ STL中的vector容器,主要内容包括: vector是顺序表容器,底层采用动态数组实现,支持任意类型元素存储; 详细讲解了vector的构造方式(默认构造、填充构造、区间构造、拷贝构造)和常用操作(插入删除、遍历访问、扩容机制); 重点分析了vector的迭代器实现原理及迭代器失效问题,提出了解决方案; 深入探讨了vector的深拷贝问题及解决方法; 完整模拟实现了vector的核心功能,包括构造函数、析构函数、扩容机制等。 文章通过大量代码示例展示了vector的实际应用,比较了

2026-10-19 09:35:23 121

原创 【C++修炼】string类:string类的模拟实现

本文实现了一个简化版的string类,模拟STL中string的基本功能。主要包含以下内容: 核心数据结构:使用char*动态数组存储字符串,配合_size和_capacity记录长度和容量 基础功能实现: 默认构造、拷贝构造、赋值重载和析构函数 迭代器支持(begin/end) 容量相关接口(size/capacity/reserve等) 元素访问([]运算符重载) 字符串操作: 修改接口(push_back/append/insert/erase等) 查找和子串操作(find/substr) 流操作(&

2026-10-16 20:51:17 173

原创 【C++修炼】string类:std标准库的string类

本文主要介绍了C++标准库中的string类及其常用接口。string类封装了字符串操作,相比C语言的字符串处理更安全高效。文章详细讲解了string类的构造函数、元素访问方法(如[]运算符、迭代器)、容量相关接口(size/capacity/resize)、修改接口(append/replace/erase)以及查找操作(find/rfind)等。同时介绍了auto关键字和范围for循环等C++11特性,这些特性与string类配合使用能提高代码简洁性。string类通过动态内存管理和丰富的成员函数,为字

2026-10-16 20:50:35 247

原创 【C++修炼】STL容器—模板进阶:非类型模板参数、模板特化、模板分离编译

本文主要讲解了C++模板中的非类型模板参数和模板特化两大核心概念。 非类型模板参数 分为类型形参和非类型形参 非类型形参可作为常量使用,常用于定义数组大小 必须是整型且编译期确定的常量 示例展示了静态数组array的实现原理 模板特化 函数模板特化:针对特殊类型定制实现,但存在匹配问题 类模板特化:包括全特化和偏特化 偏特化可对参数类型进行进一步限制(指针/引用等) 推荐使用重载代替函数模板特化 模板分离编译问题 解释了模板分离编译导致链接失败的原因 提供了显式实例化和定义放头文件两种解决方案 文章通过大量

2026-10-16 20:49:56 385

原创 【C++修炼】模板初阶:泛型编程、函数模板、类模板

本文介绍了C++模板编程的基础知识,主要包括函数模板和类模板的使用。函数模板通过类型参数实现代码复用,支持隐式和显式实例化,编译器会根据实参类型自动生成具体函数。类模板必须显式实例化,通过指定类型参数生成具体类。文章详细讲解了模板的定义格式、实例化过程、参数匹配原则等核心概念,并通过多个代码示例演示了模板的实际应用,包括交换函数、加法函数和栈类的实现。模板编程是C++泛型编程的基础,能够显著提高代码复用率和可维护性。

2026-10-15 09:16:59 71

原创 【C++修炼】C/C++内存分布与管理:new、delete、malloc、free

本文系统介绍了C/C++内存管理机制。主要内容包括:1. 内存分布模型(栈、堆、数据段、代码段等)及各区域特性;2. C语言动态内存管理函数(malloc/calloc/realloc/free)的使用方法;3. C++内存管理操作符(new/delete)的特点及其与malloc/free的区别;4. operator new/delete函数的底层实现原理;5. new/delete操作符的实现机制;6. 定位new表达式的使用场景;7. 使用注意事项和常见问题分析。重点阐述了new/delete在底层

2026-10-15 09:16:19 817

原创 【C++修炼】类和对象(下):再探构造、类型转换、友元函数、static成员、内部类、匿名对象

本文深入探讨了C++类和对象的高级特性,主要包括:1. 构造函数初始化列表的使用及注意事项;2. 类型转换的实现方式及其优化;3. static成员的特性和应用场景;4. 友元函数和友元类的定义及使用;5. 内部类的概念和特性;6. 匿名对象的定义和使用场景。通过代码示例详细演示了各特性的具体实现,分析了成员变量的声明、定义与初始化关系,比较了初始化列表与函数体内赋值的区别,并探讨了编译器优化、访问权限控制等关键问题。

2026-10-15 09:13:37 121

原创 【C++修炼】类和对象(中):六大默认成员函数

本文深入讲解了C++类和对象的默认成员函数,重点包括构造函数、析构函数、拷贝构造函数和赋值运算符重载。主要内容如下: 构造函数:用于对象初始化,具有自动调用、重载、默认构造等特点。编译器生成的默认构造函数对内置类型不做初始化,需显式实现以满足需求。 析构函数:负责资源清理,对象销毁时自动调用。默认析构函数对内置类型不做处理,自定义类型会调用其析构函数。有资源申请的类必须显式实现析构。 拷贝构造函数:用于对象拷贝初始化,必须使用引用传参以避免无限递归。默认拷贝构造实现浅拷贝,有资源申请的类需实现深拷贝。 运算

2026-10-15 09:13:18 303

原创 【C++修炼】类和对象(上):初识类和对象、this指针

本文系统介绍了C++中类和对象的核心概念。主要内容包括:1. 类与对象的定义:类作为用户自定义类型,通过封装成员变量和方法实现数据与行为的绑定;2. 访问控制:通过public、private等限定符实现封装;3. 内存管理:对象仅存储成员变量,成员函数存放在代码段;4. this指针:编译器隐式添加的指针参数,用于区分不同对象调用相同方法;5. 类域与命名空间:类定义了新的作用域,影响编译查找规则。文章通过对比C语言结构体实现栈和C++类实现栈的案例,展示了面向对象编程在封装性、安全性等方面的优势,为理解

2026-10-15 09:12:50 173

原创 【C++修炼】哈希表的实现

本文系统讲解哈希表的实现原理与代码实践。首先介绍哈希的概念,说明其本质是关键字到存储位置的映射关系;随后讲解直接定址法及其适用场景。接着引入哈希表,分析哈希冲突与负载因子的权衡,并介绍除法散列法、乘法散列法和全域散列法三种哈希函数。针对哈希冲突,重点讲解开放定址法(线性探测、二次探测、双重探测)与链地址法两种解决方案,并给出完整的 C++ 代码实现,涵盖插入、扩容、查找、删除以及字符串等非整型关键字的转换处理。

2026-09-12 11:53:32 464

原创 【C++修炼】Myunordered_map/Myunordered_set 封装哈希表

本文围绕 C++ 标准库中 unordered_map/unordered_set 的底层实现展开。首先分析 SGI-STL30 版本中 hash_map/hash_set 的源码框架,理解哈希表 hashtable 如何通过泛型编程同时支持单键和键值对结构;随后模拟实现 unordered_map/unordered_set,重点讲解框架搭建、insert 插入、迭代器 iterator 的实现思路,并给出完整可运行的代码,帮助读者掌握哈希表容器的底层原理与封装技巧。

2026-09-12 11:53:11 182

原创 【C++修炼】面向对象—继承

本文深入讲解了面向对象编程中的继承机制,主要涵盖以下内容: 继承基础 继承是面向对象三大特性之一,允许子类复用父类特性并扩展新功能 三种继承方式(public/protected/private)及其访问权限变化规则 继承与类模板的对比,展示不同层次的代码复用方式 继承关键问题 父子类对象赋值兼容规则(切片原则) 继承体系中的作用域与名称隐藏规则 子类默认成员函数(构造/析构/拷贝/赋值)的实现要点 虚继承解决菱形继承的数据冗余和二义性问题 设计实践 继承与组合的对比:is-a关系优先继承,has-a关系优

2026-09-10 20:20:12 473

原创 【C++修炼】C++11

本文系统梳理C++11引入的现代C++核心特性,涵盖列表初始化、右值引用与移动语义、可变参数模板、lambda表达式、类的新功能、STL新变化以及包装器等七大主题。文章从列表初始化统一初始化方式讲起,深入剖析initializer_list的底层机制;随后重点讲解右值引用如何通过移动构造与移动赋值解决传值返回的拷贝问题,并延伸至引用折叠、完美转发等进阶内容。可变参数模板部分介绍参数包与包扩展的编译期展开原理,lambda部分则从语法、捕捉列表到底层仿函数实现层层递进。此外还涉及默认成员函数扩展、defaul

2026-09-10 20:19:36 46

原创 【C++修炼】异常

本文系统讲解C++异常处理机制,涵盖异常的概念、抛出与捕获、栈展开、匹配规则、重新抛出、异常安全及异常规范,并介绍标准库异常体系。通过多个代码示例,展示如何利用throw和catch实现错误传递与统一处理,以及大型项目中基于异常基类设计自定义异常体系、使用catch(...)兜底保障的实践方法。

2026-09-09 19:47:54 219

原创 【C++修炼】智能指针使用及原理

本文深入剖析C++智能指针的设计原理与使用场景。文章从手动管理内存的痛点出发,引出RAII资源管理思想,并系统讲解C++标准库中auto_ptr、unique_ptr、shared_ptr和weak_ptr四种智能指针的特点与适用场景。通过模拟实现,揭示auto_ptr的管理权转移、unique_ptr的独占所有权以及shared_ptr基于引用计数的共享管理机制。针对shared_ptr的循环引用问题,详细阐述weak_ptr的弱引用解决方案;同时分析shared_ptr引用计数的线程安全问题及原子化处理

2026-09-09 19:47:20 197

原创 【C++修炼】初识C++:命名空间、缺省参数、函数重载、引用、内联函数、指针空值

本文摘要:C++基础语法特性解析 本文系统介绍了C++的六个核心语法特性: 命名空间:解决名称冲突问题,通过namespace定义,支持嵌套和跨文件合并 缺省参数:函数参数默认值,分为全缺省和半缺省(必须从右往左) 函数重载:同名函数通过参数类型/数量/顺序区分,实现类似功能 引用:变量的别名,与指针相比更安全但不可更改引用对象 内联函数:inline修饰避免函数调用开销,适合短小频繁调用的函数 nullptr:C++11引入的空指针常量,替代NULL避免二义性 这些特性共同构成了C++区别于C语言的重要语

2024-10-25 14:49:51 1409

原创 数据结构修炼——树?二叉树?堆?从入门到代码实现,第二弹!!!

本文介绍了二叉树的链式实现,包括二叉树的创建与销毁、前序/中序/后序遍历、获取结点个数、求深度等核心操作。重点讲解了如何通过前序遍历序列递归构建二叉树,并分析了不同遍历方式的实现逻辑。此外,还详细说明了二叉树销毁必须采用后序遍历的原因,以及计算结点个数、叶子结点数、第k层结点数和树深度的方法。文章通过图示和代码示例帮助理解二叉树的链式存储结构和相关操作,为后续学习更复杂的树形结构奠定了基础。

2024-10-23 08:00:00 875

原创 数据结构修炼——常见的排序算法:插入/希尔/选择/堆排/冒泡/快排/归并/计数

如果a[0]是它的有序区间,那我们不就可以取有序区间后一元素——a[1],与有序区间中的元素依次比较然后插入合适位置,插入后有序区间不就扩大成a[0]到a[1]了,我们接着选a[2]继续比较并插入有序区间,不断重复,直到完成整个数组的排序即可,这就是插入排序的核心内容。其实很简单,A、B部分不一定要个数相等,更重要的是A、B部分内是有序的。归并排序往往从大小为n的区间,一直拆分到大小为2的区间,然后对大小为2的区间排序,所有区间大小为2的区间排序完就可以对区间大小为4的区间排序,排完又可以对更大区间排序。

2024-10-23 08:00:00 1330

原创 数据结构修炼——树?二叉树?堆?从入门到代码实现,第一弹!!!

本文介绍了树与二叉树的基本概念和结构。首先阐述了树的定义,即一种非线性数据结构,由有限结点组成的层次集合,并解释了根结点、子树等核心概念。随后详细讲解了树的相关术语,如结点的度、叶结点、分支结点、双亲孩子关系、树的深度等。文章重点介绍了二叉树的概念,包括其特性(每个结点最多两棵子树)和特殊类型(满二叉树、完全二叉树),并比较了它们的区别。最后讨论了二叉树的两种存储结构:顺序存储(适合完全二叉树)和链式存储(二叉链和三叉链),为后续实现二叉树算法奠定了基础。

2024-10-11 19:32:09 1032

原创 数据结构修炼——栈和队列是什么?如何实现?从入门到实战

本篇文章介绍了栈与队列的概念与结构,并给出了实现栈与队列的代码示例,在实现代码中特别标注了许多细节,如:栈顶处的下标,栈的扩容问题与入队、出队操作的各种情况等。在初步了解栈与队列后,文章还分享了一些OJ题帮助读者进一步掌握栈与队列的各种操作与特点,并拓展了循环队列的概念与实现。最后提供了几道选择题练习与巩固所有知识。

2024-10-11 18:00:00 1128

原创 数据结构修炼——顺序表和链表的OJ题练习

顺序表与链表入门,相关OJ题分享:移除元素,合并两个有序数组,移除链表元素,反转链表,链表的中间结点,合并两个有序链表,链表的回文结构,相交链表,环形链表I,环形链表II......

2024-09-14 20:05:00 1172

原创 数据结构修炼——顺序表和链表的区别与联系

线性表(linear list)是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串…线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上,或者说实际的数据存储中,并不一定是连续的,线性表中的元素在物理存储时,通常以数组或链式结构的形式存储。

2024-09-14 08:00:00 1276

原创 数据结构修炼——时间复杂度?空间复杂度?教你如何衡量算法的优劣!!

复杂度不仅在校招、面试以及OJ题中常有考察,也帮助了程序员更好的判断算法的优劣。复杂度分为时间复杂度与空间复杂度,而它们的表达都采用的是大O的渐进表示法。大O的渐进表示法是在数量级的层次上来估计算法的复杂度,常见的数量级与大小关系为:O(1) < O(logn) < O(n) < O(nlogn) < O(n^2^) < O(n^3^) < O(2^n^) < O(n!) < O(n^n^)。在这篇文章中,也给出了许多练习来帮助大家更好地理解复杂度的概念与掌握其运用方法。

2024-09-13 08:00:00 1248 1

原创 C语言修炼——代码的底层原理?编译与链接?预处理详解

本文详细讲解了C语言程序的编译和链接过程。首先介绍了翻译环境和执行环境的概念,指出源代码需要经过编译链接生成可执行程序。随后深入分析了翻译环境的三个阶段:预处理(处理宏、头文件等)、编译(词法/语法/语义分析生成汇编代码)、汇编(转换为机器指令)。重点说明了链接阶段如何通过重定位解决多文件间的符号引用问题。最后补充了预处理阶段的细节,包括预定义符号、#define定义常量和宏等内容,帮助读者全面理解C程序从源码到可执行文件的完整转换流程。

2024-04-20 19:37:10 1858 1

原创 C语言修炼——什么是流?什么是文件?什么是文件操作?

磁盘(硬盘)上的⽂件是⽂件。但是在程序设计中,我们⼀般谈的⽂件有两种:程序⽂件、数据⽂件(从⽂件功能的⻆度来分类的)。上⾯说的适⽤于所有输⼊流⼀般指适⽤于标准输⼊流和其他输⼊流(如⽂件输⼊流);所有输出流⼀般指适⽤于标准输出流和其他输出流(如⽂件输出流)。

2024-04-18 18:10:58 1277 1

原创 C语言修炼——还不会结构体,联合体与枚举?学习这一篇就够了

/代码1:变量的定义int x;int y;}p1;//第一种结构体变量的创建方法——声明类型同时定义变量p1//第二种结构体变量的创建方法——声明类型后,定义结构体变量p2//代码2:初始化。//创建了一个struct Point类型的结构体变量并初始化struct Stu //类型声明//名字int age;//年龄//第一种初始化结构体变量的方法——不指定按成员变量前后顺序初始化//第二种初始化结构体变量的方法——指定成员变量初始化(可乱序)

2024-04-16 21:26:27 1039

原创 C语言修炼——内存函数与数据的存储

函数memcpy从source的位置开始向后复制num个字节的数据到指向的内存位置与source所指向内存空间中存储的两段数据的类型互不相干,数据在内存中的存储都是以二进制文本的形式,memcpy是从字节的层面复制所有的二进制信息这个函数在遇到'\0'的时候并不会停下来,而是复制完指定的字节数如果source和有任何的重叠,复制的结果都是未定义的为了避免overflows,需要确保与source指向的数组的大小至少为num对于重叠的内存,需要用memmove进行复制memcpy。

2024-04-14 17:20:30 1382 1

原创 C语言修炼——还不会的字符函数和字符串函数给你一次讲明白!

在编程的过程中,我们经常要处理字符和字符串,为了⽅便操作字符和字符串,C语⾔标准库中提供了⼀系列库函数,接下来我们就学习⼀下这些函数。的模拟实现需要注意,我们应该在两字符串相同位序下字符不同的时候去比较,所以我们可以直接用一个循环结构遍历字符串,直到遇见相异字符或。中,⽽⼀个错误码的数字只是一个整数,我们很难理解其代表的含义,所以每⼀个错误码都是有对应的错误信息的。语句判断的作用其实是节省内存,提高效率。,表⽰没有错误,当我们在使⽤标准库中的函数的时候发⽣了某种错误,就会将对应的错误码,存放在。

2024-04-13 18:41:03 1948

原创 C语言修炼——还不会指针?一次讲明白!最终弹!!

回调函数本质就是被函数指针调用的函数。回调函数有什么用呢?我们先来看一段代码:可以看出上述代码显得比较冗余:那么有什么方法能改进呢?这里就用到了回调函数。我们使用回调函数就可以用最简洁高效的代码根据情况灵活的调用特定函数解决特定问题。代码改进后:二、qsort使用举例在排序算法中,我们常见的有冒泡排序,选择排序,插入排序,快速排序,希尔排序等,而是基于快速排序的可以直接用来排序数据的库函数。上图是的一些介绍主要有这么几点我们需要特别关注一下:有四个参数、、、。这四个的含义分别是排序的数据所占

2024-04-11 23:06:45 1225 1

原创 C语言修炼——还不会指针?一次讲明白!第二弹!!

显然二维数组中存储的是一维数组,那每个元素,即每个一维数组应该也有自己的地址。由此,我们可以借用指针数组,存储每个一维数组的首元素的地址,通过指针数组结合指针运算与解引用操作,我们既可以找到需要的一维数组,也可以找到对应一维数组中的所有元素。类型的大小(地址的大小在x86(32位)环境下是4个字节,在x64(64位)环境下是8个字节),此处是x86环境,所以第二行的结果是1,如果在x64环境下则结果为2。所以,根据数组名是数组⾸元素的地址这个规则,⼆维数组的数组名表⽰的就是第⼀⾏的地址,是⼀维数组的地址。

2024-03-28 23:21:33 971 1

原创 C语言修炼——还不会指针?一次讲明白!第一弹!!

内存、地址与指针有什么关系?指针变量是什么?指针变量类型有什么意义?指针变量的大小是多少?const的作用?指针的三种运算方式:指针加减整数、指针-指针、指针的关系运算;野指针有哪些情况?如何避免野指针?assert有多么好用!如何正确使用assert断言?指针的传值调用和传址调用是什么?

2024-03-21 23:24:16 1289 1

原创 C语言修炼——汉罗塔问题与函数递归

汉诺塔问题是一个经典的问题。汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把所有圆盘移到另一根柱子上。并且规定,任何时候,在小圆盘上都不能放大圆盘,且一次只能搬动一个圆盘。问应该如何操作搬动次数最少?

2024-02-12 01:34:54 1249 1

stl30 头文件<map><set><stl-map.h><stl-set.h><stl-tree.h>

stl30 头文件<map><set><stl-map.h><stl-set.h><stl-tree.h>

2026-08-28

sgi stl3.0 <stl-tree.h> 头文件

sgi stl3.0 <stl-tree.h> 头文件

2026-08-28

sgi stl3.0 <stl-map.h> 头文件

sgi stl3.0 <stl-map.h> 头文件

2026-08-28

sgi stl3.0 <stl-set.h> 头文件

sgi stl3.0 <stl-set.h> 头文件

2026-08-28

sgi stl3.0 <set> 头文件

sgi stl3.0 <set> 头文件

2026-08-28

sgi stl3.0 <map> 头文件

sgi stl3.0 <map> 头文件

2026-08-28

空空如也

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

TA关注的人

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