C语言学习
文章平均质量分 80
C语言学习笔记
SegmentFault 咖啡馆
世界上最遥远的距离,不是生与死,而是我在写代码,你却看不懂。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C语言学习笔记(十五):预处理
C语言预处理机制是编译前的文本处理阶段,主要包括文件包含、宏定义和条件编译三大功能。通过#include指令引入头文件时需注意路径搜索规则和重复包含问题;宏定义分为简单宏和带参宏,使用时需注意括号包裹参数以避免运算优先级错误;条件编译通过#if/#ifdef等指令实现代码选择性编译,常用于调试控制、跨平台适配和功能开关。预处理还提供#error报错、#line控制行号等辅助功能。最佳实践包括:宏名全大写、多语句宏使用do-while包装、及时#undef未使用宏。预处理虽强大但需谨慎使用,过度复杂的宏会降低原创 2026-03-24 19:23:07 · 416 阅读 · 0 评论 -
C语言学习笔记(十四):编译与链接
本文系统介绍了C语言程序的编译链接过程,包括预处理、编译、汇编和链接四个阶段。详细讲解了各阶段的任务和工具使用,如gcc命令选项、预处理指令、目标文件格式等。重点分析了静态链接与动态链接的区别、多文件项目组织方法、符号作用域管理以及静态库/动态库的创建使用。文章还涵盖了编译优化技术、调试方法、常见错误处理及最佳实践建议,帮助开发者深入理解程序构建原理,提高代码质量和构建效率。通过掌握这些知识,可以更好地解决编译链接问题,编写模块化、可维护的代码。原创 2026-03-24 19:12:37 · 439 阅读 · 0 评论 -
C语言学习笔记(十三):文件操作
本文系统介绍了C语言文件操作的核心知识,主要内容包括:1)文件操作基础概念,包括文件类型分类和操作流程;2)文件指针与打开模式详解;3)字符读写函数(fgetc/fputc)和字符串读写函数(fgets/fputs)的使用;4)格式化读写函数(fprintf/fscanf)的应用;5)二进制文件操作(fread/fwrite)方法;6)文件定位函数(fseek/ftell/rewind)实现随机访问;7)标准输入输出流的使用;8)错误处理机制;9)实战案例展示配置文件解析器的实现;10)最佳实践和性能优化建原创 2026-03-23 08:00:00 · 656 阅读 · 0 评论 -
C语言学习笔记(十二):动态内存管理
动态内存管理是C语言最强大也最危险的功能之一。正确使用可以让程序灵活原创 2026-03-22 16:34:07 · 419 阅读 · 0 评论 -
C语言学习笔记(十):操作符
本文系统介绍了C语言中的各类操作符及其应用。主要内容包括:1)算术、移位、位操作符的使用方法和注意事项;2)赋值、关系、逻辑操作符的功能特性;3)条件、逗号操作符的特殊用法;4)操作符优先级规则和类型转换机制。重点强调了整数除法与浮点数除法的区别、位操作技巧、短路求值特性以及常见错误防范。通过示例代码演示了各操作符的实际应用,并提供了加密算法等综合练习。文章最后总结了操作符使用的最佳实践,指出掌握操作符是编写高效C程序的基础,建议通过实际编码加深理解,注意优先级问题并合理使用括号。原创 2026-03-22 16:18:20 · 397 阅读 · 0 评论 -
C语言:随机数
随机数是许多有趣程序的基础。掌握了随机数的使用,你就能创造出各种游戏、模拟程序和实用工具。多动手实践,才能真正理解随机数的奥秘!原创 2026-03-21 21:21:00 · 924 阅读 · 0 评论 -
C语言:两天打鱼,三天晒网
本文介绍了一个判断渔民"三天打鱼,两天晒网"活动的程序。程序从1990年1月1日开始计算,通过输入目标日期,计算总天数后对5取余来判断当天状态:余数1-3为打鱼,余数4或0为晒网。实现过程包括闰年判断、月份天数计算、日期验证等功能,并提供了完整的C语言代码示例。程序展示了日期处理和周期问题的解决方法,还可扩展为批量查询、统计等功能,适用于值班排班等周期性场景。原创 2026-03-19 18:03:19 · 783 阅读 · 0 评论 -
C 语言:哥德巴赫猜想
哥德巴赫猜想验证程序摘要 哥德巴赫猜想是数学中著名的未解决问题,认为任何大于2的偶数都可表示为两个素数之和。本文介绍了用C语言验证该猜想的方法:首先实现素数判断函数,通过遍历2到n/2的数来寻找素数对组合。程序包含基础版本和优化版本(使用素数缓存),支持批量验证和用户输入验证。文中还提供了思考题和优化建议,如使用埃拉托色尼筛法提高效率。通过这个练习,可以掌握素数判断、循环嵌套和算法优化等编程技巧,理解数学问题与编程的关联性。原创 2026-03-19 12:49:38 · 739 阅读 · 0 评论 -
C语言:实现乘法表
本文介绍了C语言实现乘法表编程的多种方法:1.基础九九乘法表采用双重循环,外层控制行数,内层控制列数,使用"%-2d"格式保证对齐;2.变形实现包括倒三角、右上三角和数字方阵版本,通过调整循环方向和空格控制实现不同效果;3.进阶功能涵盖彩色输出、自定义范围和文件存储,使用ANSI颜色代码和文件I/O操作。文章强调了循环结构、格式化输出和变形设计的关键技巧,并指出优化方向。所有示例均附代码实现和解析,完整展示了乘法表编程的多样化实现方案。原创 2025-06-27 06:30:00 · 772 阅读 · 0 评论 -
C语言:最大公约数
实现最大公约数的各种方法原创 2025-06-21 23:25:28 · 1399 阅读 · 0 评论 -
C语言:排序算法
排序算法可分为三大类:时间复杂度为O(n²)的基础算法(冒泡、选择、插入排序),O(nlogn)的高效算法(快速、归并、堆排序),以及特定条件下的线性时间算法(计数、基数排序)。算法选择需综合考虑时间复杂度、空间复杂度、稳定性及应用场景:小规模数据适合插入排序,中等规模优先选用快速排序,大规模数据可考虑归并或堆排序,整数排序则适用计数/基数排序。各种算法在交换次数、额外空间需求和稳定性方面各具特点,实际应用中需根据数据特征选择最优方案。原创 2025-06-21 13:31:20 · 950 阅读 · 0 评论 -
C语言:二分搜索函数
二分搜索是一种高效查找有序数组元素的算法,时间复杂度O(logn)。基本实现包括迭代法和递归法,核心思路是通过不断将搜索范围减半来定位目标元素。存在多种变种应用:查找第一个/最后一个等于目标的值、查找第一个大于等于目标的值等。使用时需注意数组必须有序、正确处理边界条件、避免整数溢出(使用mid=left+(right-left)/2而非(left+right)/2)等常见问题。该算法比线性搜索更高效,但对数据有序性有严格要求。原创 2025-06-20 23:18:06 · 300 阅读 · 0 评论 -
C语言:实现杨辉三角的种方法
摘要:本文探讨杨辉三角的多种实现方法。基础二维数组法直观但空间复杂度高(O(n²));优化一维数组法将空间复杂度降至O(n);递归实现简洁但效率低(O(2ⁿ));组合数公式法理论明确但易溢出;动态规划优化了计算与输出;指针方法支持动态内存分配,更实用。各种方法在空间效率、时间复杂度与实现复杂度上各有优劣,可根据具体需求选择。(135字)原创 2025-06-20 23:07:21 · 544 阅读 · 0 评论 -
C语言:斐波那契数列
本文介绍了斐波那契数列的多种计算方法:递归法(简洁但效率低O(2^n))、迭代法(高效O(n))、动态规划法(可优化空间)、矩阵幂法(适合大数O(logn))和公式法(O(1)但精度有限)。每种方法均有其特点,其中迭代法因简单高效成为首选,递归适合小规模计算,矩阵幂法适用于大规模运算,而公式法则受限于精度问题。实际应用中需根据具体需求选择最佳算法。原创 2025-06-14 22:35:36 · 748 阅读 · 0 评论 -
C语言:实现两个整数交换的所有方法
摘要:常见变量交换方法对比:1)临时变量法简单可靠但需额外空间;2)算术运算省空间但可能溢出;3)位运算防溢出但可读性差;4)宏定义通用但易出问题;5)内联汇编高效但平台相关。临时变量法最通用,位运算适合嵌入式系统,算术运算需确保不溢出。根据安全性、可读性和性能需求选择合适方法,多数场景推荐使用临时变量法。原创 2025-06-14 00:00:37 · 690 阅读 · 0 评论 -
C语言学习笔记九(宏定义)
C语言预处理与宏定义解析 摘要:预处理是C语言编译前的文本处理阶段,通过宏定义、文件包含等指令实现代码转换。宏定义分为无参宏(如常量定义)和带参宏(类似函数),具有编译前替换、无类型检查等特点。使用带参宏需注意参数括号、副作用和多行定义等问题。C语言提供了特殊运算符(#字符串化、##连接符)和预定义宏(如__LINE__)。相比函数,宏适合简单操作但调试困难。最佳实践包括:宏名大写、参数加括号、避免副作用、及时#undef等。宏常用于常量定义、条件编译和泛型编程等场景。原创 2025-06-13 23:05:15 · 480 阅读 · 0 评论 -
C语言学习笔记八(结构体)
本文系统介绍了C语言结构体的核心知识,包括:结构体的声明与定义(三种方式)、初始化方法(顺序/指定/部分)、成员访问操作(.和->运算符)。重点讲解了结构体内存对齐规则、结构体数组、嵌套结构体等特性。同时涵盖了结构体与函数的交互(参数传递与返回值)、结构体指针使用(包括动态内存分配)、位域和柔性数组等高级特性。文章还对比了结构体与联合体、C++类的区别,并列举了常见应用场景和使用注意事项,为C语言开发者提供了全面的结构体编程指南。原创 2025-06-12 14:13:02 · 647 阅读 · 0 评论 -
C语言学习笔记三(流程控制句话)
表示流程的开始或结束,通常标注"Start"或"End":表示处理步骤或操作,如变量赋值、数学运算等:表示条件判断或分支结构,对应C语言的if/switch语句:表示控制流方向,连接各个操作步骤:表示输入/输出操作,如scanf/printf语句。原创 2025-06-10 15:25:01 · 1144 阅读 · 0 评论 -
C语言学习笔记七(函数)
函数是编程中实现特定功能的独立代码块,具有复用性和模块化特点。它由返回类型、函数名、参数列表和函数体组成,可分为库函数和自定义函数,按参数和返回值类型进一步细分。函数支持递归调用,参数传递包括值传递和地址传递。变量的作用域分局部和全局,存储类别有auto、static等。函数指针、可变参数、内联函数等高级特性增强了灵活性。设计函数时应遵循单一职责原则,合理控制长度,进行参数检查。函数可处理数组和结构体,并通过回调机制实现更复杂功能。main函数作为程序入口有特殊形式。良好的函数设计能提升代码可读性和可维护性原创 2025-06-12 13:35:36 · 1209 阅读 · 0 评论 -
C语言学习笔记一(常量)
常量类型优点缺点字面常量直接使用,无需定义可读性差,难维护const常量类型安全,支持作用域占用内存枚举常量提高代码可读性仅支持整型值宏常量(#define)不占内存,灵活无类型检查,调试困难根据需求选择合适的常量类型,建议优先使用const和枚举以提高代码健壮性。原创 2025-02-27 15:54:05 · 2304 阅读 · 0 评论 -
C语言学习笔记六(指针)
数组是相同类型数据元素的集合,这些元素在内存中连续存储。原创 2025-06-11 23:03:32 · 667 阅读 · 0 评论 -
C语言学习笔记二(变量)
数据类型:决定变量可以存储的数据类型,如(整型)、(单精度浮点型)、(双精度浮点型)、(字符型)等。变量名:由用户自定义,必须遵循标识符的命名规则。2. 变量命名规则变量名是变量的标识符,必须遵循以下规则:以字母或下划线开头:变量名的第一个字符是必须字母(A-Z或a-z)或下划线(_),不能以数字开头。正确示例:、错误示例:(以数字开头)只能包含字母、数字和下划线:变量名中不能包含空格、标点符号或其他特殊字符。正确示例:错误示例:(包含)区分大小写:C语言是区分原创 2025-03-02 16:36:31 · 2722 阅读 · 0 评论 -
C语言学习笔记四(一维数组)
一维数组是最简单的数组形式,它只有一行数据。数据类型 数组名[数组长度];数据类型:可以是任意基本数据类型,如intfloatchar等。数组名:用户自定义的数组名称,遵循C语言标识符的命名规则。数组长度:表示数组中可以存储的元素个数,必须是一个正整数。int arr[5];// 定义一个包含5个整数的数组// 定义一个包含10个浮点数的数组// 定义一个包含26个字符的数组。原创 2025-06-10 15:56:06 · 877 阅读 · 0 评论 -
C语言学习笔记五(二维数组)
二维数组是数组的数组,可以看作是由行和列组成的表格。原创 2025-06-11 22:45:42 · 1513 阅读 · 0 评论
分享