自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++类和对象(上)

带你从0开始彻底理解类和对象

2025-11-19 21:08:10 857

原创 C++入门

C++兼容C语言语法,但需要将文件后缀改为.cpp并使用g++编译。C++有自己的输入输出方式,如cout和cin,通过iostream库实现,并推荐使用std命名空间避免命名冲突。命名空间(namespace)用于隔离变量、函数和类,防止命名污染,可通过::、using或全局展开方式访问。C++的输入输出支持自动类型识别,比C语言的printf/scanf更便捷。此外,C++支持缺省参数(默认参数),分为全缺省和半缺省,缺省参数必须在函数声明中指定。

2025-10-22 13:30:26 961

原创 解剖顺序表

本文介绍了线性表的基本概念与两种实现方式——顺序表,重点分析了动态顺序表的实现细节。主要内容包括:1)线性表作为有限序列的定义与常见形式;2)顺序表与数组的区别,强调顺序表是数组的封装;3)动态顺序表的结构设计,使用指针、size和capacity管理内存;4)初始化、尾插和头插操作的代码实现,包括容量检查与扩容机制(按2倍增长);5)通过断言检查指针有效性,使用realloc进行动态内存管理。

2025-09-20 20:27:29 982

原创 深入理解数据结构之复杂度

本文主要介绍了数据结构与算法的基础概念,重点讲解了算法效率的衡量标准——时间复杂度和空间复杂度。通过旋转数组的案例,说明了直接循环K次轮转方法的效率问题,引出复杂度分析的重要性。文章详细阐述了时间复杂度的计算方法,包括大O渐进表示法的推导规则,并通过多个代码示例展示了不同情况下的时间复杂度计算过程,如线性复杂度O(N)、常数复杂度O(1)以及冒泡排序的最坏情况O(N^2)。

2025-09-16 21:58:25 1131

原创 深入理解 C语言之操作符

本文介绍了C语言中操作符的分类、二进制转换、原码/反码/补码、移位操作符、位操作符等内容。主要内容包括:1)操作符的分类,如算术、移位、位操作等;2)二进制与十进制、八进制、十六进制的相互转换方法;3)整数的原码、反码和补码表示,重点说明计算机中存储的是补码;4)左移和右移操作符的运算规则;5)位操作符(&、|、^、~)的使用及实际应用案例;6)单目操作符和逗号表达式的简要说明。通过具体代码示例,帮助理解相关概念在实际编程中的应用。

2025-08-03 13:56:11 571

原创 深入理解C语言之预处理

本文介绍了C语言中预定义符号和宏定义的相关知识。主要内容包括:1. 预定义符号(如__FILE__、__LINE__等)的使用;2. #define定义标识符的注意事项,建议不要在结尾添加分号;3. 带参数的宏定义及其潜在问题,强调要用括号明确运算顺序;4. 宏与函数的对比,分析各自的优缺点;5. #和##运算符的作用,用于字符串化和符号连接;6. 命名约定建议宏名全大写;7. #undef指令的用法;8. 命令行定义符号的方法。文章通过具体示例说明了宏定义可能带来的副作用和优先级问题,并给出了解决方案。

2025-08-03 02:59:33 1170

原创 深入理解编译和链接

本文介绍了C语言程序的翻译环境和运行环境。翻译环境包括编译和链接两个主要过程,其中编译又分为预处理、编译和汇编三个阶段。预处理阶段处理宏定义、头文件包含等指令;编译阶段进行词法分析、语法分析和语义分析;汇编阶段将代码转换为机器指令;链接阶段解决多文件之间的函数和变量调用问题。运行环境则涉及程序加载、执行和终止的过程,包括内存分配、函数调用栈管理等机制。文章通过代码示例详细说明了各阶段的具体操作,并提供了GCC命令来观察中间文件生成过程。

2025-08-03 02:12:04 1016

原创 深入理解 C语言之文件操作

本文主要介绍了C语言中文件操作的基础知识。文件用于持久化保存程序数据,分为程序文件和数据文件两种。数据文件又可分为文本文件和二进制文件,区别在于存储方式不同(ASCII码或二进制形式)。文件通过文件指针(FILE*)进行操作,使用前需打开(fopen),使用后需关闭(fclose)。文章还详细说明了文件的顺序读写和随机读写函数,如fgetc、fputc、fseek等,并对比了格式化输入输出函数scanf/printf与文件操作版本fscanf/fprintf的差异。

2025-08-03 01:34:46 1384

原创 为什么要有动态内存分配?

本文介绍了C语言中动态内存分配的相关知识。主要内容包括:1)动态内存分配的必要性,解决固定大小数组的局限性;2)malloc和free函数的使用方法及注意事项;3)calloc和realloc函数的特点与区别;4)常见动态内存错误分析;5)动态内存经典笔试题解析;6)柔性数组的概念、特点和使用方法。文章通过代码示例详细讲解了动态内存管理的各种技术要点,帮助读者掌握灵活申请和释放内存空间的技巧,避免内存泄漏等问题。

2025-08-03 00:34:47 689

原创 带你彻底理解 自定义类型之联合和枚举

本文介绍了C语言中的联合体和枚举类型。联合体是多个成员共享同一内存空间的复合类型,其大小至少为最大成员的大小,且具有内存对齐特性,适用于需要节省内存的场景(如商品属性管理)。枚举类型通过列举可能取值来增强代码可读性,具有类型检查、便于调试等优点。文章通过代码示例展示了联合体的内存布局特点、大小计算规则,以及枚举类型的声明和使用方法,并比较了枚举与#define定义常量的区别。最后提供了一个利用联合体判断机器字节序的练习。

2025-08-02 22:51:34 1191

原创 详细解析结构体

本文介绍了C语言中结构体的相关知识,主要包括结构体声明、内存对齐、传参方式以及位段实现等内容。首先回顾了结构体的基本声明和初始化方法,特别强调了结构体自引用时需要使用指针而非直接嵌套。在内存对齐部分详细讲解了4条对齐规则,并分析了空间换时间的优化策略。结构体传参建议优先传递地址以提高效率。最后介绍了位段的概念、内存分配方式及其跨平台问题,并举例说明了位段在网络协议中的应用优势。文章通过具体代码示例和原理分析,全面阐述了结构体在C语言中的关键知识点。

2025-08-02 22:13:13 1083

原创 带你彻底理解 整数 和 浮点数 在内存当中的存储方式

本文主要探讨了整数和浮点数在内存中的存储方式。整数采用补码形式存储,便于统一处理符号位和加减运算,并介绍了大端和小端字节序的概念及判断方法。浮点数则遵循IEEE 754标准,通过符号位(S)、指数(E)和尾数(M)三部分存储,分析了其存取的规则及特殊情况(如E全0或全1时的含义)。文中通过多个代码练习验证了不同数据类型的存储特性,如整型截断、无符号数溢出等问题,并解释了浮点数与整型解读差异的原因(如9的整型与浮点数形式)。最后,通过指针操作和数组越界等案例,进一步展示了内存数据的访问逻辑。

2025-08-02 19:39:05 1224

原创 C语言的内存函数

本文介绍了C语言中memcpy和memmove函数的使用与模拟实现以及memset和memcmp的详细使用。memcpy用于内存块的拷贝,可以处理任意类型的数据,其参数包括源地址、目标地址和拷贝字节数。文章通过示例展示了如何实现memcpy函数,重点讲解了逐字节拷贝的方法,并指出其在处理重叠内存区域时的局限性。memmove函数则专门用于处理重叠内存区域的拷贝,能够正确处理源地址和目标地址重叠的情况。文章最后简要提及了memmove的模拟实现思路,指出需要特殊处理重叠区域的情况。

2025-07-23 11:43:44 807

原创 strstr的使用和模拟实现、strtok和strerror的详细使用

本文介绍了C语言中strstr和strtok和strerror三个字符串处理函数的使用与实现。对于strstr函数,文章详细讲解了其功能(查找子串首次出现位置)、返回值特性,并给出了模拟实现的完整代码,包括暴力匹配算法和边界条件处理。对于strtok函数,重点解析了其分隔字符串的工作原理,通过示例展示了如何利用该函数拆分含有分隔符的字符串,并提供了实用的循环调用方法。文章还提及了更高效的KMP算法作为strstr的优化方向,适合需要深入了解字符串操作的开发者参考。

2025-07-20 18:59:40 1054

原创 strncpy 、strncat、strncmp 使用详解

本文介绍了三个长度受限的字符串操作函数:strncpy、strncat和strncmp。strncpy在拷贝时若源字符串不足指定长度会自动补'\0';strncat在追加字符后会自行添加一个'\0'但不会补足超出长度的部分;strncmp可限制比较的字符个数。通过对比标准函数和使用示例,说明了这些受限版本函数的特点和用法,为字符串操作提供了更精确的控制。

2025-07-17 15:04:38 500

原创 strlen、strcpy、strcat、strcmp的使用和模拟实现

C语言中字符处理函数的使用和模拟实现方法。主要内容包括:1.字符分类函数(如islower、isdigit等)的用法及示例;2.字符转换函数(toupper、tolower)的应用;3.strlen函数的三种模拟实现方式(计数器法、指针相减法、递归法);4.strcpy、strcat、strcmp函数的基本用法及注意事项。文章通过具体代码示例演示了这些函数的实际应用,并重点分析了strlen返回值类型导致的问题以及数组名不能直接赋值的原因等等。这些内容有助于深入理解C语言中字符串和字符处理的基本原理。

2025-07-14 17:23:37 1069 1

原创 深入理解sizeof和strlen,以及各种形式的指针运算

带你彻底分清sizeof和strlen,彻底掌握指针运算

2025-07-02 18:40:35 883

原创 还没学会C语言指针?点进来!---深入理解指针(4)

C语言指针的武林秘籍,传你绝世神功!

2025-06-17 01:55:35 1155 1

原创 还没学会C语言指针?点进来!---深入理解指针(3)

C语言指针保姆级教学

2025-06-13 16:03:26 1154

原创 还没学会C语言指针?点进来!---深入理解指针(2)

C语言指针保姆级教学,包教包会!

2025-06-13 15:24:32 670

原创 还没学会C语言指针?点进来!---深入理解指针(1)

C语言指针保姆级教学,包教包会!!!

2025-06-13 15:00:53 1018

空空如也

空空如也

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

TA关注的人

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