<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[xingke的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/xingke</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; xingke]]></copyright><item><title><![CDATA[C 语言多文件编程：（一）头文件、extern、编译链接]]></title><link>https://blog.youkuaiyun.com/xingke/article/details/162174047</link><guid>https://blog.youkuaiyun.com/xingke/article/details/162174047</guid><author>xingke</author><pubDate>Sat, 11 Jul 2026 12:31:11 +0800</pubDate><description><![CDATA[c是代码实体（存实现、参与编译链接），.h是接口说明书（存声明、仅被引用）；实现放 c、声明放 h，是 C 语言多文件编程的绝对规范。h 不主动找 c，链接器根据同名标识符匹配声明与定义；h 与 c 无需强制同目录，新手建议同目录方便管理；h 中函数声明可省略 extern，全局变量必须加 extern，杜绝重复定义报错。]]></description><category></category></item><item><title><![CDATA[C语言typedef的用法详解]]></title><link>https://blog.youkuaiyun.com/xingke/article/details/162596714</link><guid>https://blog.youkuaiyun.com/xingke/article/details/162596714</guid><author>xingke</author><pubDate>Sun, 05 Jul 2026 09:58:54 +0800</pubDate><description><![CDATA[本文详细讲解C语言中的typedef关键字，主要包含以下内容： typedef的本质与用途 作用：为已有数据类型创建别名，不会创建新类型 优势：简化代码、提高可读性、统一跨平台类型 六大使用场景详解 基础类型：简化int/char等内置类型 数组类型：封装固定长度数组 指针类型：安全定义多个指针变量 结构体：省略struct关键字 函数指针：简化复杂回调函数声明 数组指针：处理二维数组 typedef与#define对比 typedef是类型别名，#define是文本替换 typedef更安全，尤其适合指针]]></description><category></category></item><item><title><![CDATA[从C语言标准揭秘C指针：第 11 章：复杂指针解析：右左法则的万能应用（史上最强）]]></title><link>https://blog.youkuaiyun.com/xingke/article/details/153475964</link><guid>https://blog.youkuaiyun.com/xingke/article/details/153475964</guid><author>xingke</author><pubDate>Sat, 04 Apr 2026 13:50:08 +0800</pubDate><description><![CDATA[这篇文章深入解析了C语言中复杂指针的拆解方法，主要内容包括： 基础铺垫：详细讲解C标准下的声明结构，将变量声明分解为&quot;声明说明符&quot;和&quot;声明符&quot;两部分，通过&quot;搭积木&quot;类比帮助理解。 核心方法：提出&quot;三步定位法&quot;这一万能工具，从变量名出发，按照&quot;向右扫描→遇括号左转→递归解析&quot;的流程，配合优先级规则和括号的三大作用，系统性地拆解任何复杂指针声明。 实战应用：通过9个从易到难的案例演示拆解过程，涵盖指针数组、数组指]]></description><category></category></item><item><title><![CDATA[从C语言标准揭秘C指针：第 10 章：指针与动态内存：堆区内存的生命周期管理]]></title><link>https://blog.youkuaiyun.com/xingke/article/details/153475657</link><guid>https://blog.youkuaiyun.com/xingke/article/details/153475657</guid><author>xingke</author><pubDate>Mon, 20 Oct 2025 22:11:17 +0800</pubDate><description><![CDATA[本章系统讲解了C语言动态内存管理的核心内容，包括动态内存的意义、四大函数(malloc/calloc/realloc/free)的用法、动态数组实现方案及常见错误规避。重点介绍了动态内存突破栈区限制的优势，详细拆解了四种内存管理函数的使用规范，对比分析了动态二维数组的多层指针和单指针偏移两种实现方案。最后总结了内存泄漏、野指针和重复释放三大核心错误的成因及解决方案，强调&quot;申请必检查，释放必置空&quot;的操作原则。这些内容是C语言内存管理的核心技能，也是面试高频考点。]]></description><category></category></item><item><title><![CDATA[从C语言标准揭秘C指针：第 9 章：多维数组指针：从三维到 N 维的扩展]]></title><link>https://blog.youkuaiyun.com/xingke/article/details/152284026</link><guid>https://blog.youkuaiyun.com/xingke/article/details/152284026</guid><author>xingke</author><pubDate>Tue, 30 Sep 2025 10:15:29 +0800</pubDate><description><![CDATA[各位同学，上一章我们深入探讨了二维数组与指针的关联逻辑 —— 二维数组在内存中连续存储，其数组名的退化规则和指针访问方式都遵循 C 标准的类型定义。今天这一章，我们将把维度进一步扩展到三维乃至 N 维，学习多维数组指针的核心特性。虽然高维数组在实际开发中不如二维数组常用，但理解其内存本质和指针访问逻辑，能帮你建立 “维度无关” 的内存观，彻底打通从一维到 N 维的认知障碍。]]></description><category></category></item><item><title><![CDATA[从C语言标准揭秘C指针：第 8 章：二维数组与指针：多维内存的访问逻辑]]></title><link>https://blog.youkuaiyun.com/xingke/article/details/152283861</link><guid>https://blog.youkuaiyun.com/xingke/article/details/152283861</guid><author>xingke</author><pubDate>Tue, 30 Sep 2025 10:12:38 +0800</pubDate><description><![CDATA[各位同学，上一章我们学习了数组指针的核心特性 —— 这种 “指向整个数组的指针” 凭借与二维数组行类型的完美匹配，成为操作多维内存的精准工具。今天这一章，我们要深入探讨 “二维数组与指针” 的深层关联，彻底搞懂二维数组的内存本质、数组名的退化规则，以及多种指针访问方式的底层逻辑。我们会结合 C 标准，对比不同访问方式的等价性，纠正 “用int**传递二维数组” 等常见错误，为理解更高维数组打下基础。]]></description><category></category></item><item><title><![CDATA[从C语言标准揭秘C指针：第 7 章：数组指针：指向数组的特殊指针]]></title><link>https://blog.youkuaiyun.com/xingke/article/details/152251565</link><guid>https://blog.youkuaiyun.com/xingke/article/details/152251565</guid><author>xingke</author><pubDate>Mon, 29 Sep 2025 08:52:04 +0800</pubDate><description><![CDATA[本文详细解析C语言中数组指针的概念与应用。数组指针是指向完整数组的指针，语法为int(*p)[n]，通过括号强制优先级实现指针定义。其核心特性是步长为整个数组的大小，适合操作二维数组的行结构。文章对比了数组指针与指针数组的区别，分析了数组指针在二维数组遍历、函数参数传递中的优势，并总结了四种常见错误：遗漏括号、类型不匹配、访问方式错误和动态数组误用。最后指出数组指针本质上是一种&quot;面向整组数据的指针&quot;，为后续学习多维数组与指针的深层关联奠定基础。]]></description><category></category></item><item><title><![CDATA[从C语言标准揭秘C指针：第 6 章：指针数组：存储指针的复合数组]]></title><link>https://blog.youkuaiyun.com/xingke/article/details/152250044</link><guid>https://blog.youkuaiyun.com/xingke/article/details/152250044</guid><author>xingke</author><pubDate>Mon, 29 Sep 2025 08:27:03 +0800</pubDate><description><![CDATA[本章系统讲解了C语言中指针数组的核心概念与应用。主要内容包括：1. 指针数组的定义与语法，强调其&quot;元素为指针的数组&quot;本质，并通过运算符优先级区分指针数组和数组指针；2. 内存管理特点，指出指针数组本身连续存储但指向的数据可离散，相比二维数组更节省空间；3. 典型应用场景，包括管理不同长度字符串、动态切换指针指向和高效排序；4. 常见错误及解决方案，如避免语法混淆、防止栈区数据覆盖和初始化悬空指针。最后预告将学习数组指针的概念与应用。]]></description><category></category></item><item><title><![CDATA[从C语言标准揭秘C指针：附：函数指针两种调用方式的 C 标准依据]]></title><link>https://blog.youkuaiyun.com/xingke/article/details/152113681</link><guid>https://blog.youkuaiyun.com/xingke/article/details/152113681</guid><author>xingke</author><pubDate>Fri, 26 Sep 2025 07:57:52 +0800</pubDate><description><![CDATA[简单说：函数调用的核心要求是 “前缀表达式最终是函数指针”—— 无论是显式解引用后的结果，还是直接使用的函数指针变量，只要满足 “最终是函数指针类型”，就能合法调用。各位同学，今天我们来重点分析函数指针的两种调用方式，通过代码示例和 C 语言标准的解读，帮大家彻底搞懂其中的原理。但从本质上讲，这两种方式最终的效果是完全一致的，都是通过函数指针找到函数的地址并执行调用，只是语法形式不同而已。说明下，"前缀表达式" 是函数调用语法里的一个术语，指的是函数名及其前面的所有部分。在实际编程中，两种方式都可以使用。]]></description><category></category></item><item><title><![CDATA[从C语言标准揭秘C指针：第 5 章：指针与函数：代码地址的灵活调用]]></title><link>https://blog.youkuaiyun.com/xingke/article/details/152113161</link><guid>https://blog.youkuaiyun.com/xingke/article/details/152113161</guid><author>xingke</author><pubDate>Fri, 26 Sep 2025 07:57:25 +0800</pubDate><description><![CDATA[函数指针是 “指向函数的指针”，其定义需明确 “指向函数的返回值类型和参数列表”，C 标准（§6.7.6.3 函数声明符）规定：“函数声明符中的参数类型列表指定了函数参数的类型信息，函数指针的声明需完全匹配被指向函数的这些信息返回值类型 (*数组名[数组大小])(参数类型列表);逐层拆解（以func_arr先与[4]结合→确定是 “大小为 4 的数组”；：再与结合→确定 “数组元素是指针”；：最后与(int)结合→确定 “指针指向接收 int 参数的函数”；前缀void。]]></description><category></category></item><item><title><![CDATA[从C语言标准揭秘C指针：附：const限定符的使用规则]]></title><link>https://blog.youkuaiyun.com/xingke/article/details/152052601</link><guid>https://blog.youkuaiyun.com/xingke/article/details/152052601</guid><author>xingke</author><pubDate>Thu, 25 Sep 2025 08:21:27 +0800</pubDate><description><![CDATA[1. 修饰规则速查表声明示例修饰目标可修改对象初始化要求基础类型变量 a无必须初始化指向的数据指针 p建议初始化，非必须指针 p 本身数据 * p必须初始化指针本身和指向的数据无必须初始化（注：IntPtr 为 int*）指针 p 本身（常量指针）数据 * p必须初始化2. const 的核心价值编译期检查：提前拦截意外修改，减少运行时错误。语义表达：明确代码意图（“此数据不可通过此路径修改”），提升可读性和可维护性。接口安全。]]></description><category></category></item><item><title><![CDATA[从C语言标准揭秘C指针：第 4 章：指针与字符串：字符序列的灵活管理]]></title><link>https://blog.youkuaiyun.com/xingke/article/details/152051802</link><guid>https://blog.youkuaiyun.com/xingke/article/details/152051802</guid><author>xingke</author><pubDate>Thu, 25 Sep 2025 08:21:07 +0800</pubDate><description><![CDATA[各位同学，上一章我们学习了指针与数组的密切关系 —— 数组的连续内存特性与指针的步长规则完美契合，让指针成为遍历数组的高效工具。今天这一章，我们要聚焦一种特殊的数组 —— 字符串。字符串本质是 “以空字符 '\0' 结尾的字符数组”，而字符指针（char*）是操作字符串的灵活工具。我们会结合 C 标准，拆解字符串的两种存储形式、字符指针的特性，以及如何用指针高效操作字符串，同时纠正 “字符串常量可修改” 等常见误区。]]></description><category></category></item><item><title><![CDATA[从C语言标准揭秘C指针：第 3 章：指针与数组：连续内存的高效遍历]]></title><link>https://blog.youkuaiyun.com/xingke/article/details/151995576</link><guid>https://blog.youkuaiyun.com/xingke/article/details/151995576</guid><author>xingke</author><pubDate>Wed, 24 Sep 2025 07:00:12 +0800</pubDate><description><![CDATA[C 标准（§6.5.6）指出：“如果指针操作的结果指向数组对象之外的内存，即使未解引用，行为也是未定义的”—— 指针越界后，无论是否访问内存，都可能导致程序崩溃、读取垃圾数据或篡改其他变量的内存。我们用代码展示风险并提供避坑方法：// 正确获取元素个数（0-4）// 错误1：越界访问数组元素（下标超出0-4）// printf("越界访问arr[5]：%d\n", arr[5]);// 结果未知（垃圾值或崩溃）// printf("越界访问*(p+10)：%d\n", *(p + 10));]]></description><category></category></item><item><title><![CDATA[从C语言标准揭秘C指针：第 2 章 指针与基础类型：数据地址的精准访问]]></title><link>https://blog.youkuaiyun.com/xingke/article/details/151993303</link><guid>https://blog.youkuaiyun.com/xingke/article/details/151993303</guid><author>xingke</author><pubDate>Wed, 24 Sep 2025 06:37:14 +0800</pubDate><description><![CDATA[int*除了指向基础类型的 “一级指针”（如int*），C 标准还允许通过指针类型的派生定义 “多级指针”—— 指向指针的指针（如int**）、指向指针的指针的指针（如int***），其本质是 “指针类型的被指向类型为另一种指针类型”（符合 C11§6.2.5.20“指针类型指向确定类型” 的要求）。多级指针中，最常用的是“二级指针”（int**，它的核心用途是 “存储一级指针的地址”。我们用代码拆解二级指针的定义、赋值、解引用，并纠正常见错误：// 步骤1：定义基础类型变量（int）]]></description><category></category></item><item><title><![CDATA[从C语言标准揭秘C指针：第 1 章 指针的本质：被误解的 “独立数据类型”]]></title><link>https://blog.youkuaiyun.com/xingke/article/details/151991717</link><guid>https://blog.youkuaiyun.com/xingke/article/details/151991717</guid><author>xingke</author><pubDate>Tue, 23 Sep 2025 10:56:06 +0800</pubDate><description><![CDATA[本文解析了C语言中指针作为独立对象类型的核心特性。主要内容包括： 打破误区：指针是与int、char同级的独立对象类型，而非变量附属品； 核心属性：指针具有类型标识、固定内存大小（与指向类型无关）和明确步长（由指向类型决定）三大特性； 编译器视角：指针类型决定了内存操作方式，确保安全访问； 基础操作：详细说明了指针的定义、赋值、解引用等基本操作流程。 文章还附带解释了不完全类型的概念及其三种形式（void类型、未完成数组、前向声明的结构体/联合体），强调其在C语言类型系统中的重要作用。 通过标准引用和代码示]]></description><category></category></item><item><title><![CDATA[从C语言标准揭秘C指针：开篇：从C语言标准出发，彻底搞懂指针的 “独立身份”]]></title><link>https://blog.youkuaiyun.com/xingke/article/details/151990834</link><guid>https://blog.youkuaiyun.com/xingke/article/details/151990834</guid><author>xingke</author><pubDate>Tue, 23 Sep 2025 10:26:24 +0800</pubDate><description><![CDATA[本文摘要： 《揭秘C指针》系列教程从C语言标准出发，系统讲解指针的本质与应用。文章首先破除&quot;指针是地址别名&quot;的误区，强调指针作为独立数据类型的核心地位（C11标准§6.2.5），解析其类型标识、内存固定性和步长规则。教程分五部分递进：基础篇建立指针独立类型认知，进阶篇剖析指针与数组、字符串、函数的关联逻辑，复杂场景篇攻克多维数组指针解析，动态内存篇详解堆区管理，最后提供工业级实践指南。通过标准条款解读与实战案例，帮助读者掌握指针类型匹配、避坑未定义行为，并拓展嵌入式开发、数据结构等高级应]]></description><category></category></item><item><title><![CDATA[C语言内存精讲系列（三十二）：C 语言动态内存综合实战：排查与修复内存问题]]></title><link>https://blog.youkuaiyun.com/xingke/article/details/151895293</link><guid>https://blog.youkuaiyun.com/xingke/article/details/151895293</guid><author>xingke</author><pubDate>Tue, 23 Sep 2025 06:25:40 +0800</pubDate><description><![CDATA[通过两个实战案例的排查与修复，我们可以总结出动态内存使用的 “避坑指南”，涵盖分配、使用、扩容、释放动态内存是 C 语言的 “双刃剑”—— 它提供了灵活的内存管理能力，但也容易引入内存泄漏、野指针等问题。解决这些问题的核心不是 “记住所有错误类型”，而是养成 “每次操作动态内存前，先检查指针有效性；每次释放内存后，先将指针置为 NULL” 的习惯。通过今天的综合实战，希望大家能将 “避坑指南” 融入实际开发，遇到内存问题时，能按 “定位问题代码→分析指针有效性→检查内存分配 / 释放流程。]]></description><category></category></item><item><title><![CDATA[C语言内存精讲系列（三十一）：C 语言野指针与非法内存操作详解]]></title><link>https://blog.youkuaiyun.com/xingke/article/details/151891557</link><guid>https://blog.youkuaiyun.com/xingke/article/details/151891557</guid><author>xingke</author><pubDate>Mon, 22 Sep 2025 07:59:09 +0800</pubDate><description><![CDATA[野指针（Wild Pointer）是指指向的内存地址无效的指针。指针指向的内存 “没有访问权限”（比如随机地址、系统保护内存）；指针指向的内存 “已经被释放”（比如用free()释放后，指针还指向原地址）。野指针的危险之处在于：它不像NULL指针（明确指向空地址），编译器无法提前检测，运行时可能 “偶尔正常”（刚好指向有效内存），也可能直接崩溃，排查难度极大。程序崩溃：访问没有权限的内存（如随机地址、系统保护内存），会触发 “段错误” 或 “访问冲突”，程序直接终止；数据错乱。]]></description><category></category></item><item><title><![CDATA[C语言内存精讲系列（三十）：C 语言内存泄漏（Memory Leak）详解]]></title><link>https://blog.youkuaiyun.com/xingke/article/details/151894756</link><guid>https://blog.youkuaiyun.com/xingke/article/details/151894756</guid><author>xingke</author><pubDate>Mon, 22 Sep 2025 07:58:55 +0800</pubDate><description><![CDATA[简单来说，内存泄漏就是程序中动态分配的内存（堆区内存）不再被使用，却没有被释放，导致这部分内存永远无法被回收。就像我们向图书馆借了一本书，看完后没有归还，也没有告诉任何人这本书在哪里 —— 这本书就成了 “无主之物”，虽然还在图书馆里，却再也不能被其他人使用。在 C 语言中，当用malloc()没有任何指针指向它程序再也无法访问到它也没有被free()释放这时，这块内存就发生了泄漏。内存泄漏是 C 语言开发中必须重视的问题，它不像语法错误那样会被编译器发现，而是悄无声息地影响程序运行。]]></description><category></category></item><item><title><![CDATA[C语言内存精讲系列（二十九）：C 语言堆区内存进阶与动态内存实战]]></title><link>https://blog.youkuaiyun.com/xingke/article/details/151891182</link><guid>https://blog.youkuaiyun.com/xingke/article/details/151891182</guid><author>xingke</author><pubDate>Sat, 20 Sep 2025 10:52:48 +0800</pubDate><description><![CDATA[到这里，我们已经学完了堆区内存的所有核心操作（malloccallocreallocfree申请必判空malloccallocrealloc返回后，必须判断是否为NULL，否则访问NULL会崩溃；realloc 用临时指针：避免原内存地址丢失，失败时手动释放原内存；释放后置 NULLfree后必须把指针置为NULL，避免野指针（后续误操作会报错，便于排查）；不重复释放：同一个堆地址只能free一次，重复释放会报错；不释放非堆内存free只能释放malloccallocrealloc。]]></description><category></category></item></channel></rss>