- 博客(12)
- 收藏
- 关注
原创 游戏玩具项目:贪吃蛇
摘要 本文介绍了一个基于C语言和Win32 API实现的经典贪吃蛇游戏。项目使用控制台窗口作为游戏界面,通过链表结构管理蛇身,实现了蛇的移动、吃食物、碰撞检测等核心功能。游戏采用宽字符(□、●、★)绘制地图和元素,支持方向键控制、加速减速、暂停等操作。文中详细讲解了Win32 API函数的使用、坐标系统、光标控制、键盘检测等技术要点,以及游戏状态管理、蛇身移动逻辑、食物生成等算法实现。该项目适合具备C语言基础和链表知识的开发者学习,可作为游戏开发入门实践,帮助巩固编程技能并提升对游戏逻辑的理解。
2025-10-16 17:33:14
1046
10
原创 自定义类型:结构体
本文回顾了结构体的基本概念与声明方式,重点讲解了结构体的特殊声明(匿名结构体)和自引用问题。通过分析内存对齐规则(包括首成员偏移、对齐数计算、总大小要求等),解释了结构体大小计算的方法及对齐的必要性(平台兼容性和访问效率)。文章指出内存对齐是以空间换时间的策略,建议通过成员排列优化空间利用率,并介绍了使用#pragma指令修改默认对齐数的方法。最后通过示例对比了不同成员排列方式对结构体大小的影响。
2025-09-13 15:45:47
840
原创 strncpy、strncpy、memcpy、strncat 、memmove
本文介绍了C语言中三个重要的内存操作函数:strncpy、strncat和memmove。strncpy用于字符串拷贝并限制最大长度,但不会自动补\0;strncat用于安全追加字符串,会自动添加终止符;memmove则能正确处理内存重叠的拷贝任务。文章通过函数原型、行为特点和代码示例详细对比了这些函数与strcpy、memcpy的区别,并总结了各函数的适用场景和使用注意事项。特别强调了strncpy可能不补\0的特性,以及memmove处理内存重叠时的智能拷贝机制,为开发者正确选择和使用这些函数提供了实用
2025-08-16 14:05:08
1313
原创 模拟实现strstr(朴素双指针实现)
摘要:本文分析了字符串查找函数my_strstr的实现细节。函数首先进行防御性检查,处理空指针输入;然后遵循C标准处理空子串的特殊情况。核心逻辑采用双指针遍历:外层循环扫描母串,内层在首字符匹配时同步比较子串。当子串指针指向结束符时返回匹配位置,否则继续搜索。该实现考虑了安全性和标准兼容性,但要注意标准库strstr不检查空指针输入。
2025-08-15 10:28:59
649
原创 qsort排序各种类型的数据
qsort是C语言标准库中的通用排序函数,采用快速排序算法,可对任意类型数据进行排序。其核心在于自定义比较函数:对于整型数组,直接比较元素值;浮点型需处理精度问题;字符串数组需用strcmp比较;结构体数组则指定字段排序。比较函数需返回负数、0或正数以表示元素相对大小。通过提供数组指针、元素个数、元素大小和比较函数,qsort可实现高效排序。该函数灵活性强,但需确保比较函数逻辑正确,否则会导致排序错误。
2025-08-11 16:43:37
1300
原创 简单的命令行计算器(函数指针数组)
该程序实现了一个简单的四则运算计算器,使用函数指针数组来动态调用不同的运算函数。定义add、sub、mul、div四个函数分别执行加减乘除运算,并将它们存储在指针数组p中。主程序通过do-while循环显示菜单,接收用户选择的运算类型和操作数,通过函数指针调用对应的运算函数并输出结果,直到用户选择退出。这种方法避免了大量条件判断,使代码更简洁灵活,但未处理除数为零的错误。
2025-08-10 09:59:42
483
原创 杨氏矩阵(在指定的矩阵中查找某个数字是否存在)
有一个数字矩阵,矩阵的每行从左到右是递增的,矩阵从上到下是递增的,请编写程序在这样的矩阵中查找某个数字是否存在。在一个中查找一个数字,可以通过来进行查找。由于矩阵的特点——每行和每列都递增,我们可以采用或开始查找的策略,这样可以在的时间复杂度内找到目标数字,其中和分别是矩阵的行数和列数。
2025-08-08 18:02:08
907
原创 数组奇偶分离
本文介绍了一种调整整数数组顺序的方法,使所有奇数位于偶数前面。通过使用双指针技术,left指针从数组起始位置查找偶数,right指针从末尾查找奇数。当两者都找到对应元素时进行交换,直到指针相遇。代码实现中,通过while循环和取模运算判断奇偶性,并使用临时变量完成元素交换。该算法时间复杂度为O(n),空间复杂度为O(1),能高效完成数组重排。
2025-08-08 11:54:08
186
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅