<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Ihadream的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Ihadream</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Ihadream]]></copyright><item><title><![CDATA[C语言静态通讯录完整实现：结构体数组、枚举菜单、函数封装与 qsort 排序详解]]></title><link>https://blog.youkuaiyun.com/Ihadream/article/details/162313868</link><guid>https://blog.youkuaiyun.com/Ihadream/article/details/162313868</guid><author>Ihadream</author><pubDate>Thu, 25 Jun 2026 20:11:00 +0800</pubDate><description><![CDATA[本文详细讲解如何使用 C 语言实现一个静态通讯录系统，包含添加联系人、删除联系人、查找联系人、修改联系人、显示联系人和按姓名排序等功能。项目使用结构体数组保存联系人信息，使用枚举实现菜单选项，使用函数封装各个模块，并通过 qsort 实现联系人按姓名升序排序。文章适合 C 语言初学者学习结构体、数组、指针传参、字符串比较和模块化编程。]]></description><category></category></item><item><title><![CDATA[C语言练习题：杨氏矩阵查找、字符串左旋与旋转字符串判断]]></title><link>https://blog.youkuaiyun.com/Ihadream/article/details/161662543</link><guid>https://blog.youkuaiyun.com/Ihadream/article/details/161662543</guid><author>Ihadream</author><pubDate>Wed, 03 Jun 2026 18:46:41 +0800</pubDate><description><![CDATA[本文主要整理三个 C 语言练习题：杨氏矩阵查找、字符串左旋、判断一个字符串是否为另一个字符串旋转后的结果。杨氏矩阵查找利用矩阵“每行递增、每列递增”的特点，从右上角开始查找，可以将时间复杂度优化到 O(N)；字符串左旋分别使用“逐字符移动法”和“三步逆序法”实现；最后通过“暴力旋转比较”和“拼接字符串查找”两种思路判断字符串旋转结果。]]></description><category></category></item><item><title><![CDATA[C语言内存函数详解：memmove 模拟实现与 memset 使用讲解]]></title><link>https://blog.youkuaiyun.com/Ihadream/article/details/161629632</link><guid>https://blog.youkuaiyun.com/Ihadream/article/details/161629632</guid><author>Ihadream</author><pubDate>Tue, 02 Jun 2026 17:24:29 +0800</pubDate><description><![CDATA[本文主要学习 C 语言中的内存操作函数 memmove 和 memset。memmove 可以完成内存数据的移动，并且能够安全处理源空间和目标空间重叠的情况；memset 可以按照字节对一块内存空间进行初始化或修改。本文会通过代码演示 memmove 的模拟实现，分析为什么重叠内存拷贝需要根据地址关系选择拷贝方向，并通过字符串案例讲解 memset 的使用方法和注意事项。同时补充介绍 memcmp 的基本用法，帮助理解内存函数都是以字节为单位进行操作的。]]></description><category></category></item><item><title><![CDATA[C语言内存函数详解：memcpy 与 memmove 的使用、模拟实现和区别]]></title><link>https://blog.youkuaiyun.com/Ihadream/article/details/161599275</link><guid>https://blog.youkuaiyun.com/Ihadream/article/details/161599275</guid><author>Ihadream</author><pubDate>Mon, 01 Jun 2026 18:19:00 +0800</pubDate><description><![CDATA[本文主要学习 C 语言中的两个内存操作函数：memcpy 和 memmove。memcpy 可以将一块内存中的数据按字节拷贝到另一块内存中，适用于不重叠内存空间之间的数据拷贝；而 memmove 的功能与 memcpy 类似，但它可以处理内存重叠的情况。本文通过整型数组、浮点型数组、模拟实现 memcpy 以及重叠内存拷贝案例，帮助理解这两个函数的使用方法、参数含义和区别。]]></description><category></category></item><item><title><![CDATA[C语言模拟实现 strstr 函数：从指针移动理解字符串查找过程]]></title><link>https://blog.youkuaiyun.com/Ihadream/article/details/161518954</link><guid>https://blog.youkuaiyun.com/Ihadream/article/details/161518954</guid><author>Ihadream</author><pubDate>Fri, 29 May 2026 17:15:32 +0800</pubDate><description><![CDATA[本文通过模拟实现 C 语言库函数 strstr，讲解如何在一个字符串中查找另一个子字符串第一次出现的位置。文章以 arr1 = "abcdefabcdef" 和 arr2 = "def" 为例，分析 cp、s1、s2 三个指针在匹配过程中的作用，逐步说明匹配失败、指针后移、匹配成功以及返回子串起始地址的完整过程。通过代码注释和图解，可以帮助初学者加深对字符串、指针、字符比较以及函数返回值的理解。]]></description><category></category></item><item><title><![CDATA[C语言字符串函数进阶：strncpy、strncat、strncmp、strstr 的用法与注意事项]]></title><link>https://blog.youkuaiyun.com/Ihadream/article/details/161425852</link><guid>https://blog.youkuaiyun.com/Ihadream/article/details/161425852</guid><author>Ihadream</author><pubDate>Tue, 26 May 2026 17:13:11 +0800</pubDate><description><![CDATA[本文主要讲解 C语言中几个常用的字符串处理函数，包括 strncpy、strncat 、strncmp和 strstr。文章从函数原型、参数含义、返回值和使用场景入手，结合代码示例分析长度受限制字符串函数与普通字符串函数的区别，重点说明 strncpy 是否补 \0、strncat 如何追加指定长度字符、以及 strstr 如何查找子字符串。通过调试内存窗口和图示过程，帮助理解字符串拷贝、追加、查找以及字符串结束标志 \0 的细节。]]></description><category></category></item><item><title><![CDATA[C语言字符串函数详解：strlen、strcpy、strcat 的实现与使用]]></title><link>https://blog.youkuaiyun.com/Ihadream/article/details/161391723</link><guid>https://blog.youkuaiyun.com/Ihadream/article/details/161391723</guid><author>Ihadream</author><pubDate>Mon, 25 May 2026 16:51:39 +0800</pubDate><description><![CDATA[本文围绕 C语言常用字符串函数 strlen、strcpy 和 strcat 展开讲解，分析它们的函数原型、参数含义、返回值以及底层实现逻辑。文章通过模拟实现 strlen、strcpy、strcat，说明字符串以 \0 作为结束标志的机制，并结合 const char*、assert 断言、指针遍历、指针自增等知识点，帮助读者理解字符串函数的本质和常见注意事项。]]></description><category></category></item><item><title><![CDATA[C语言指针面试题详解：char*数组、二级指针与指针运算]]></title><link>https://blog.youkuaiyun.com/Ihadream/article/details/161365900</link><guid>https://blog.youkuaiyun.com/Ihadream/article/details/161365900</guid><author>Ihadream</author><pubDate>Sun, 24 May 2026 17:20:35 +0800</pubDate><description><![CDATA[本文结合两道C语言指针面试题，详细分析字符指针数组、二级指针 char**、数组名退化、指针自增自减以及解引用的执行过程。通过图示推导 printf 的输出结果，帮助理解字符串指针数组中指针移动、地址变化和表达式求值顺序。]]></description><category></category></item><item><title><![CDATA[C语言指针与数组经典面试题解析：数组地址、指针运算、大小端与二维数组]]></title><link>https://blog.youkuaiyun.com/Ihadream/article/details/161343016</link><guid>https://blog.youkuaiyun.com/Ihadream/article/details/161343016</guid><author>Ihadream</author><pubDate>Sat, 23 May 2026 19:39:09 +0800</pubDate><description><![CDATA[本文通过 5 道 C 语言经典数组与指针面试题，系统分析一维数组、二维数组、数组地址、指针加减、强制类型转换以及大小端存储等易错知识点。文章重点讲解 &a + 1、a + 1、ptr - 1、结构体指针偏移、整型地址偏移、二维数组行指针以及指针相减等表达式的含义，帮助读者理解“指针的类型决定指针加减的步长”这一核心规则。通过这些案例，可以进一步掌握数组名退化、数组地址、元素地址和内存存储方式之间的关系，为后续学习 C 语言指针、结构体和内存管理打好基础。]]></description><category></category></item><item><title><![CDATA[C语言 sizeof 和 strlen 经典题解析：字符数组、指针与二维数组]]></title><link>https://blog.youkuaiyun.com/Ihadream/article/details/161305241</link><guid>https://blog.youkuaiyun.com/Ihadream/article/details/161305241</guid><author>Ihadream</author><pubDate>Fri, 22 May 2026 16:44:57 +0800</pubDate><description><![CDATA[本文围绕 C 语言中 sizeof 和 strlen 的经典易错问题展开，通过 char arr[] = "abcdef"、char* p = "abcdef" 以及二维数组 int a[3][4] 等例子，分析数组名在不同场景下的含义、数组名退化为首元素地址的条件、sizeof 在编译阶段根据类型计算大小的特点，以及 strlen 按照 '\0' 结束符统计字符串长度的运行机制。文章重点区分了字符数组、字符指针、数组地址、元素地址和二维数组行地址之间的差异，帮助初学者建立对数组、指针和内存访问的清晰理解。]]></description><category></category></item><item><title><![CDATA[指针的理解]]></title><link>https://blog.youkuaiyun.com/Ihadream/article/details/161285812</link><guid>https://blog.youkuaiyun.com/Ihadream/article/details/161285812</guid><author>Ihadream</author><pubDate>Thu, 21 May 2026 20:19:00 +0800</pubDate><description><![CDATA[数组指针的理解]]></description><category></category></item><item><title><![CDATA[初始C语言3]]></title><link>https://blog.youkuaiyun.com/Ihadream/article/details/133800581</link><guid>https://blog.youkuaiyun.com/Ihadream/article/details/133800581</guid><author>Ihadream</author><pubDate>Thu, 12 Oct 2023 22:35:42 +0800</pubDate><description><![CDATA[讲解了操作符，简单的算术操作符，着重讲解了除法/和取余%，除法有两种类型，包括整数除法和浮点数除法，浮点数除法要保证除数和被除数两个至少有一个是浮点数，比如，7.0/2,使用printf输出时候的格式要带lf表示输出double类型，%取余只需要注意，两个都必须是整数类型。，-，+，sizeof不是函数而是操作符，不能用sizeof int,但是可以sizeof a,sizeof后面的括号可以省略就表示他不是一个函数，而是操作符，讲解了前置和后置的++，- -内置的类型：C语言本身具有的类型。]]></description><category></category></item><item><title><![CDATA[C语言初阶2]]></title><link>https://blog.youkuaiyun.com/Ihadream/article/details/133691077</link><guid>https://blog.youkuaiyun.com/Ihadream/article/details/133691077</guid><author>Ihadream</author><pubDate>Sun, 08 Oct 2023 22:08:12 +0800</pubDate><description><![CDATA[今天学习了第二节课，又细讲了一边scanf函数和printf函数，解释了变量和常量的概念和类型，讲解了变量的作用域和生命周期，常量的四种类型，字面常量，const常变量，#define定义的常量，枚举常量enum。介绍了字符串单引号字符，双引号字符串，转义字符的概念，怎么用(如何打印目录i)着重介绍了\ddd，讲解了进制，权重。注释的两种类型，C++和C风格的注释。讲解了简单的选择语句if，还有循环语句while。]]></description><category></category></item><item><title><![CDATA[C语言初阶1]]></title><link>https://blog.youkuaiyun.com/Ihadream/article/details/133685062</link><guid>https://blog.youkuaiyun.com/Ihadream/article/details/133685062</guid><author>Ihadream</author><pubDate>Sun, 08 Oct 2023 16:47:58 +0800</pubDate><description><![CDATA[第一节课学习了,什么是底层开发，底层开发就是应用软件一下的软件的开发，比如操作系统和驱动层。C语言中的main是主函数有且只有一个，是程序的入口，后面介绍了数据的类型，有长整型，整型，短整型，字符型...long,int,short,char....，介绍了他们的长度，单位是字节，比如一个char占用了1个字节，这里讲解了单位bit，字节，kb，mb，gb，tb，讲了之间的换算，讲解了sizeof，讲解了赋予变量的两种方式。]]></description><category></category></item></channel></rss>