- 博客(15)
- 收藏
- 关注
原创 c语言内存函数
本文介绍了C语言中常用的内存操作函数及其模拟实现方法。首先讲解了memcpy函数的使用和模拟实现,强调其按字节拷贝的特性;然后对比memmove函数与memcpy的区别,重点说明memmove能处理内存重叠的情况并给出两种模拟实现方案;接着介绍memset的内存设置功能及其注意事项;最后说明memcmp的内存比较功能。每个函数都配有代码示例,清晰展示了它们在内存操作中的具体应用场景和实现原理,为理解底层内存操作提供了实用参考。
2025-06-03 23:58:41
1262
原创 字符函数和字符串函数
本文介绍了C语言中常用的字符串处理函数及其模拟实现方法。主要内容包括:1. 字符分类函数(islower等)和转换函数(tolower/toupper)的使用;2. 字符串操作函数:strlen(求长度)、strcpy(拷贝)、strcat(拼接)、strcmp(比较)的用法及模拟实现;3. 带长度限制的字符串函数:strncpy、strncat、strncmp;4. 字符串查找函数strstr和分割函数strtok;5. 错误处理函数strerror和perror。
2025-06-02 16:07:12
708
原创 文件操作管理
本文摘要: 本文全面介绍了C语言中文件操作的相关知识,主要包括以下内容: 文件的基本概念:区分程序文件和数据文件,解释文件名组成结构,以及二进制文件和文本文件的区别。 文件操作流程: 使用FILE指针管理文件流 fopen()和fclose()函数进行文件的打开和关闭 标准输入/输出流(stdin/stdout)的概念 文件读写函数: 顺序读写:fputc/fgetc、fputs/fgets、fprintf/fscanf、fwrite/fread 随机读写:fseek、ftell、rewind 格式化转换:
2025-05-29 18:26:24
1374
原创 动态内存管理
本文系统介绍了C语言动态内存管理的核心内容,包括动态内存分配的必要性、常用函数及其使用规范。主要内容可归纳为: 动态内存分配的必要性:解决固定大小数组无法满足运行时不确定空间需求的问题,使程序更灵活。 关键函数详解: malloc:申请指定大小连续堆空间 free:释放动态分配的内存 calloc:申请并初始化空间为0 realloc:调整已分配内存大小 常见错误分析:包括NULL指针解引用、越界访问、错误释放等6类典型错误,强调内存泄漏风险。 使用规范: 必须检查分配是否成功 谁申请谁释放原则 free后
2025-05-24 15:48:31
1231
原创 数据在内存中的存储
本文详细探讨了整数和浮点数在内存中的存储方式。首先,整数在内存中以二进制的补码形式存储,无符号整数的原码、反码和补码相同。其次,介绍了大小端字节序的概念及其判断方法,大端字节序将高位字节存储在低地址,小端字节序则相反。接着,通过多个练习加深了对字节序和整数存储的理解。最后,讨论了浮点数在内存中的存储方式,根据IEEE 754标准,浮点数由符号位、指数和有效数字三部分组成,并详细解释了浮点数的存储和读取过程。通过代码示例,展示了浮点数存储的实际应用和可能出现的误差。
2025-05-23 16:43:55
973
原创 自定义类型:结构体、联合体、枚举
本文详细介绍了C语言中结构体、联合体和枚举类型的使用及其相关特性。结构体部分包括结构体的声明、变量创建与初始化、自引用、内存对齐规则及其原因,以及结构体传参和位段的实现。联合体部分探讨了联合体的声明、特点、大小计算及其应用场景,如判断大小端字节序。枚举类型部分则介绍了枚举的声明、优点及其在实际编程中的应用,如增加代码可读性和维护性。通过具体代码示例,展示了这些数据类型在实际编程中的灵活运用,帮助读者深入理解其原理和使用方法。
2025-05-22 19:42:04
979
原创 深入理解指针(5)
本文对比了C语言中的sizeof和strlen操作符,并详细解析了数组和指针相关的笔试题。sizeof用于计算变量或类型占用的内存大小,而strlen则用于计算字符串的长度,直到遇到\0为止。文章通过多个代码示例展示了sizeof和strlen在不同情况下的使用和结果,特别强调了数组名在不同上下文中的含义及其与指针的关系。此外,文章还通过指针运算的笔试题,深入探讨了指针的加减操作及其在内存中的表现,帮助读者更好地理解C语言中数组和指针的底层机制。
2025-05-17 19:50:06
1191
原创 深入理解指针(4)
本文介绍了函数指针数组、转移表、回调函数以及qsort函数的使用和模拟实现。函数指针数组是存放函数指针的数组,通过数组下标可以调用相应的函数。转移表通过函数指针数组简化了代码中的重复操作。回调函数是通过函数指针调用的函数,常用于将函数作为参数传递。qsort函数可以排序任意类型的数据,本文展示了如何对整型和结构体类型进行排序,并模拟实现了qsort函数的功能。通过这些内容,读者可以更好地理解函数指针和排序算法的应用。
2025-05-15 15:24:29
792
原创 深入理解指针(3)
本文主要探讨了C语言中的指针相关概念,包括字符指针、数组指针、二维数组传参、函数指针以及typedef类型重命名。字符指针部分解释了如何通过指针操作字符串,并强调了常量字符串的特性。数组指针部分区分了指针数组和数组指针,并说明了如何初始化数组指针。二维数组传参部分揭示了二维数组名在函数参数中实际上是数组指针的本质。函数指针部分介绍了如何通过指针调用函数,并展示了函数指针的声明和使用。最后,typedef部分展示了如何通过typedef为数组指针和函数指针类型创建别名,以及一般的类型重命名方法。这些内容为深入
2025-05-11 17:41:04
818
原创 深入理解指针(2)
本文深入探讨了数组和指针的相关概念及其应用。首先,数组名通常表示数组首元素的地址,但在sizeof和&操作中例外。文章通过代码示例展示了如何使用指针访问数组,并解释了数组名与指针的等价性。接着,讨论了数组传参的本质,即传递的是数组首元素的地址。此外,文章还介绍了冒泡排序的实现,展示了如何通过指针操作进行排序。最后,文章引入了二级指针和指针数组的概念,说明了指针变量地址的存储方式以及指针数组的定义和使用。通过这些内容,读者可以更深入地理解数组和指针在C语言中的应用与区别。
2025-05-10 17:24:38
563
原创 详解操作符
a=a1^b(此时这个表达式中的b是上一个表达式(b=a1^b)结果的b),在第二个表达式被执行的时候,b的值已经被a的值所替代,最终实现两个整数的交换。在大多数的编译器里面都是算术右移,也就是右边抛弃,左边用符号位填补,在上图中,红色的0表示的是填补上的符号位,红色的1表示被抛弃的。八进制:0,1,2,3,4,5,6,7 十六进制:0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f。•赋值操作符: = 、+= 、 -= 、 *= 、 /= 、%= 、<<= 、>>= 、&= 、|= 、^=
2025-04-26 18:07:18
1134
原创 求喝汽水,1瓶汽水1元,num个空瓶可以换一瓶汽水,给money元,可以喝多少汽水
5个空瓶可以换2个汽水,剩余1个空瓶, 5%2=2 余1。20元买20瓶汽水,得到20个空瓶,钱花光了。换完之后剩3个空瓶,可以换1个汽水,剩余1个空瓶, (2+1)%2=1 余1。
2025-04-24 21:56:08
283
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人