自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据在内存中的存储

本文介绍了整数和浮点数在内存中的存储方式。整数以补码形式存储,便于统一处理符号位和加减运算。多字节数据存在大小端存储模式:大端模式将高位字节存于低地址,小端模式相反。通过代码示例演示了如何判断机器字节序,并分析了char类型在不同场景下的整型提升规则。浮点数遵循IEEE754标准,分为符号位S、指数E和尾数M三部分,存储时对E和M有特殊处理规则。文章通过实例解析了整型和浮点型数据在内存中的二进制表示差异,解释了相同内存数据在不同类型解读下产生不同结果的原因,帮助理解计算机底层数据存储机制。

2026-02-12 20:10:54 570

原创 C语言内存函数

本文介绍了四种常用的内存操作函数:1. memcpy实现内存复制,按字节复制指定长度数据,不处理重叠内存;2. memmove功能类似但能处理源和目标内存重叠的情况;3. memset以字节为单位设置内存值;4. memcmp比较两段内存内容。重点分析了memcpy和memmove的实现原理,包括非重叠情况下的正向复制和重叠情况下的反向复制策略。这些函数提供了高效的内存操作方式,适用于各种数据类型处理,比字符串操作函数更通用。

2026-01-26 12:00:48 257

原创 字符函数和字符串函数

本文介绍了C语言中常用的字符和字符串处理函数,主要包括:1. 字符分类函数(如islower)和转换函数(如toupper);2. 字符串操作函数(strlen、strcpy、strcat、strcmp)及其模拟实现方法;3. 带长度限制的安全版本函数(strncpy、strncat、strncmp);4. 字符串查找函数strstr及其实现原理;5. 字符串分割函数strtok和错误信息函数strerror/perror的使用。文章通过代码示例详细说明了各函数的功能、参数要求和注意事项,并提供了多个模拟实

2026-01-21 15:22:15 567

原创 深入理解指针(6)

摘要:本文详细分析了C语言中sizeof和strlen的区别,以及数组和指针相关的笔试题解析。sizeof是编译期操作符,计算变量或类型的内存大小;strlen是运行时库函数,统计字符串长度直到遇到\0。通过多个代码示例对比了两者的不同行为,特别指出strlen在没有\0时会越界读取。文章还解析了数组名在不同上下文中的含义变化,包括一维、二维数组和指针运算场景,通过具体代码展示了sizeof在不同数组表达式中的计算结果,以及指针运算时的地址变化规律。最后通过7个典型笔试题,深入剖析了指针与数组的复杂关系,包

2026-01-20 01:25:32 558

原创 深入理解指针(5)

本文介绍了回调函数的概念及其应用。回调函数是通过函数指针调用的函数,由特定事件触发而非直接调用。文章通过计算器程序改造展示了回调函数的简化作用:将重复的输入输出逻辑封装,通过函数指针传递不同运算函数。接着讲解了qsort函数的使用方法,包括整型数组和结构体数组的排序实现,并详细说明了qsort的参数含义。最后模拟实现了qsort函数,采用冒泡排序算法,使用void指针处理不同类型数据,以char为最小单位进行内存操作。文中特别强调了const修饰符在比较函数中的作用是保证数据只读性。

2026-01-17 17:34:02 38

原创 深入理解指针(4)

本文系统讲解了C语言中各类指针的应用。首先分析了字符指针的本质和使用误区,指出字符串常量赋值的实质是存储首字符地址。其次详细介绍了数组指针的定义、初始化和二维数组传参的本质,强调数组指针指向的是整个数组而非单个元素。然后深入解析了函数指针的创建、使用及两段经典复杂代码,并介绍了typedef简化类型定义的方法。最后通过计算器案例展示了函数指针数组作为转移表的实际应用,对比传统switch实现,体现了指针数组的简洁性。全文通过大量代码示例,循序渐进地阐述了指针在C语言中的高级用法。

2026-01-16 17:41:12 590

原创 深⼊理解指针(3)

本文主要讲解了C语言中指针与数组的关系及应用。首先指出数组名本质上是首元素地址,但在sizeof和取地址操作时例外。通过代码示例展示了指针访问数组元素的多种方式,包括指针运算和数组下标访问的等价性。其次探讨了一维数组传参的本质是传递首元素地址,因此函数内无法直接获取数组大小。接着介绍了冒泡排序的两种实现方法,包括优化版本。最后讲解了二级指针的概念和指针数组的用法,通过指针数组模拟了二维数组的访问方式。全文通过多个代码示例详细解析了指针操作数组的各种技巧和注意事项。

2026-01-16 11:35:33 609

原创 深入理解指针(2)

Swap1函数时,将a和b传递给了Swap1函数,在Swap1函数内部创建了形参x和y接收a和b的值,但是x的地址是0x00cffcec,y的地址是0x00cffcf0,x和y确实接收到了a和b的值,不过x的地址和a的地址不一样,y的地址和b的地址不⼀样,相当于x和y是独立的空间,那么在Swap1函数内部交换x和y的值,自然不会影响a和b,当Swap1函数调用结束后回到main函数,a和b的没法交换。NULL 是C语言中定义的一个标识符常量,值是0,0也是地址,这个地址是无法使用的,读写该地址会报错。

2026-01-15 18:14:22 558

原创 深入理解指针(1)

本文系统讲解了C语言中指针的核心概念。首先通过宿舍编号类比,解释了内存编址原理,指出指针本质就是内存地址。然后详细介绍了指针变量的定义、取地址(&)和解引用()操作符的使用,分析了指针类型对解引用权限和指针运算步长的影响。文章还探讨了void指针的特性,以及指针的三种基本运算:加减整数、指针相减和关系比较。最后通过数组遍历和字符串长度计算等实例,展示了指针在实际编程中的应用。全文深入浅出地阐述了指针这一重要概念,为理解C语言内存管理和高效编程奠定了基础。

2026-01-15 15:18:11 607

原创 操作符详解

本文系统介绍了C语言中的各类操作符及其应用,重点讲解了二进制相关操作符和表达式求值机制。主要内容包括:1. 操作符分类:详细列举了算术、移位、位运算、赋值等11类操作符;2. 二进制与进制转换:深入解析二进制表示方法及与八/十/十六进制的转换规则;3. 原码/反码/补码:阐述整数存储原理及补码运算优势;4. 位运算与移位操作:通过实例演示按位与/或/异或等运算及左右移位规则;5. 表达式求值:分析整型提升、算术转换机制,指出复杂表达式的不确定性风险;6. 结构体访问:介绍结构体成员的直接(.)和间接(-&g

2026-01-14 10:57:01 636

原创 递归揭秘:从阶乘到斐波那契

摘要:本文介绍了C语言中递归的概念和应用。递归是函数调用自身解决问题的方法,其核心思想是将复杂问题分解为相似但规模更小的子问题。文章通过阶乘计算和数字逐位打印两个示例演示递归实现,并强调递归必须满足终止条件和逼近条件两个限制。同时指出递归可能导致栈溢出和效率低下问题,建议在适当场景下使用迭代替代递归,特别是以斐波那契数列为例说明递归可能产生大量重复计算。最后提醒要合理使用递归,权衡其简洁性和性能开销。

2026-01-13 09:14:31 587

原创 VS实⽤调试技巧

本文介绍了程序调试的基本概念与方法。首先解释了bug(程序漏洞)和debug(调试)的含义,对比了Debug(调试版本)和Release(发布版本)的区别。重点讲解了VS调试环境的使用技巧,包括常用快捷键(F9设置断点、F5启动调试等)、监视窗口和内存观察等调试手段。通过三个典型调试案例(阶乘计算、数组越界、扫雷游戏)演示了调试过程,分析了常见错误原因。最后将编程错误分为编译型、链接型和运行时错误三类,并强调调试对理解程序运行机制的重要性。全文强调动手实践,掌握调试技能能帮助程序员深入理解代码执行过程。

2026-01-12 00:06:05 701

原创 数组和函数实践:扫雷游戏

本文介绍了扫雷游戏的设计与实现方案。游戏采用控制台界面,在9×9棋盘上随机布置10个地雷,通过菜单选择开始或退出游戏。系统使用两个11×11数组分别存储地雷位置(mine)和玩家探索信息(show),其中mine数组初始化为'0',地雷设为'1';show数组初始化为'*',显示周围地雷数量。程序采用三文件结构:game.h定义函数原型和常量,game.c实现游戏逻辑(初始化棋盘、布置地雷、计算周围地雷数等功能),test.c处理用户交互。通过扩展数组边界至11×11有效避免了边界检查问题,使游戏逻辑更加简

2026-01-02 20:15:06 329

原创 C语言函数:从库函数到自定义

C语言函数分为库函数和自定义函数。库函数由标准库提供,通过头文件引入,如sqrt()等数学函数。自定义函数由程序员编写,包括返回类型、函数名、参数和函数体。函数参数分为形参(定义时)和实参(调用时),两者内存独立。return语句用于返回值,需注意类型匹配。数组可作为函数参数传递,形参和实参数组共享内存。函数可嵌套调用和链式访问(如printf嵌套)。函数需先声明后使用,多文件编程时将声明放.h文件,定义放.c文件。static关键字可修饰局部变量(延长生命周期)、全局变量和函数(限制作用域为当前文件),e

2025-12-31 17:37:16 551

原创 掌握C语言数组:一维与二维数组详解及经典案例

本文摘要:文章系统介绍了C语言数组的相关知识,包括一维数组和二维数组的创建、初始化及使用方法。详细讲解了数组下标访问、内存存储特性(连续存储)、sizeof计算元素个数等核心概念。特别说明了二维数组的行列访问方式及内存布局特点,并介绍了C99标准中的变长数组特性。最后通过两个典型练习(字符汇聚效果和二分查找算法)演示了数组的实际应用。全文内容全面,从基础概念到实际应用层层递进,是学习C语言数组的完整指南。

2025-12-31 01:06:23 386

原创 猜数字游戏

摘要:本文介绍了一个C语言实现的猜数字游戏。游戏通过rand()函数生成1-100的随机数,使用srand(time(NULL))确保随机性。玩家输入猜测数字后,程序会提示"大了"或"小了",直到猜中为止。文章详细讲解了随机数生成原理,包括rand()、srand()和time()函数的用法,以及如何限定随机数范围。最后提供了完整的游戏实现代码,包含菜单界面和5次机会限制功能。

2025-10-08 11:29:17 317

原创 分支与循环

C语言程序设计的三大基本结构包括顺序、选择和循环。选择结构通过if/else语句实现多条件分支,需要注意嵌套if时的悬空else问题;循环结构则包括while、for和do-while三种形式,各有特点。文章还介绍了关系运算符、逻辑运算符的使用,以及break和continue在循环控制中的作用。此外,switch语句提供了清晰的多路分支解决方案,而goto语句则可用于特殊场景下的流程跳转。通过合理组合这些结构,可以构建各种复杂的程序逻辑。

2025-10-07 17:15:04 735

原创 C语言的数据类型和变量

本文系统介绍了C语言的数据类型、变量、操作符及输入输出函数。主要内容包括:1. 数据类型:详细讲解了整型、字符型、浮点型和布尔类型,以及signed/unsigned修饰符的使用。2. 变量:介绍了变量的创建、初始化和作用域(全局/局部变量)。3. 操作符:包括算术操作符、赋值操作符、单目操作符等,并解释了它们的运算规则。4. 输入输出函数:重点讲解了printf和scanf函数的格式控制、占位符使用及注意事项。5. 强制类型转换:说明了类型转换的必要性和使用方法。文章通过大量代码示例,帮助读者理解C语言的

2025-09-21 17:14:20 878

原创 C语言常见概念

摘要:C语言基础知识点解析,包括程序入口main函数、printf库函数、32个关键字、字符与ASCII编码、字符串与转义字符、语句分类及注释规范。main函数是唯一程序入口,需返回整型值;printf需包含stdio.h头文件;关键字具有特殊含义不可自定义;字符遵循ASCII编码;字符串以\0结尾;转义字符改变原义;语句分为空语句、表达式语句等5类;注释分/**/和//两种形式,用于代码说明但不影响执行。掌握这些基础概念对C语言编程至关重要。

2025-08-27 15:25:41 1009

空空如也

空空如也

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

TA关注的人

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