C
文章平均质量分 68
解码C系列
YouEmbedded
愿能与同路的你交流互鉴~
博客园 :https://www.cnblogs.com/YouEmbedded/
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
tips图解复杂数组、指针声明
本文通过图文结合的方式解析了6种复杂指针和数组的声明方式,包括函数指针数组、多级函数指针、返回数组指针的函数等。图中展示了每种声明的具体结构,并强调指针层级(*的数量)决定了访问路径的差异。核心观点指出:不同层级的指针可以指向同一函数类型,但访问路径不同。这些示例有助于理解C语言中复杂的指针与数组组合声明。原创 2025-09-23 11:40:46 · 132 阅读 · 0 评论 -
tips图解数组名与指针的关系
摘要:本文介绍了C/C++中数组名退化为指针的概念及其应用场景。数组名在大多数表达式中会自动转换为指向首元素的指针,如赋值给指针、函数传参、算术运算等场景。但作为sizeof或&操作数时不会退化。文章通过代码示例和内存图解(一维/二维数组)直观展示了退化机制,解释了退化后数组名与指针的区别,包括类型变化和运算行为的差异。这些内容有助于理解数组与指针的底层关系及正确使用方式。原创 2025-09-23 11:35:41 · 417 阅读 · 0 评论 -
解码C语言控制台颜色输出
ANSI转义序列在大多数Unix/Linux终端和Windows 10+的终端中支持,但旧版Windows cmd可能不支持。恢复默认设置,否则后续输出都会保持该颜色。:可以同时设置字体颜色和背景颜色。:设置颜色后,必须使用。:多个属性可以组合使用。\033[属性代码m。原创 2025-09-22 09:14:08 · 247 阅读 · 0 评论 -
解码C语言模块化编程
本文介绍了C语言模块化设计的原则与实现步骤。模块化设计遵循高内聚、低耦合、单一职责和接口清晰四大原则,如将数学计算函数集中到math_utils模块。实现分为头文件(.h)和源文件(.c)两部分:头文件声明对外接口(函数、常量、结构体等),使用#pragma once防止重复包含;源文件实现具体功能,通过static限制内部函数/变量作用域。示例展示了math_utils模块的定义与调用过程,体现了模块化设计的封装性和复用性。原创 2025-09-22 09:13:25 · 147 阅读 · 0 评论 -
解码C语言宏
C语言预处理是在编译前对源代码进行文本替换和调整的过程,主要包括宏定义(无参宏、带参宏)、条件编译等指令。预处理阶段通过#define定义常量或函数式宏,使用#ifdef等指令实现条件编译,并支持字符串化(#)和连接(##)操作符。虽然宏能提高代码复用性和执行效率,但需注意副作用(如多次求值)和调试困难等问题。最佳实践包括全大写命名、充分加括号、优先使用函数等。通过gcc -E可查看预处理结果,#error用于强制检查配置。预处理为跨平台适配和模块化开发提供了灵活支持。原创 2025-09-22 09:12:27 · 722 阅读 · 0 评论 -
解码C语言位字段
为单位分配成员空间,用于紧凑存储布尔标志或小范围整数值,节省内存。常用于硬件寄存器操作、协议数据解析等场景。小端存储:低位数据保存到低地址空间。原创 2025-09-22 09:11:45 · 122 阅读 · 0 评论 -
解码C语言复合数据类型之联合体与枚举
联合体成员共用同一块内存,但数据有效性取决于赋值操作:未赋值时,内存中是随机数据,任何成员解读都无意义(状态未定义);只有最后一次被赋值的成员,因其数据是按自身类型写入的,才能正确解读内存内容,成为可安全访问的有效成员。枚举为整数值提供有意义的名称,提高代码可读性和可维护性。所有成员共享同一块内存空间。,用于安全地处理多种数据类型。联合体是一种特殊的数据类型,原创 2025-09-22 09:10:38 · 171 阅读 · 0 评论 -
解码C语言复合数据类型之结构体
摘要:结构体的定义与使用 结构体是C语言中用于组合不同数据类型的自定义类型。定义方式包括直接声明、typedef别名和匿名结构体。结构体支持直接初始化、按成员赋值和动态初始化,成员访问使用.或->运算符。结构体可作为函数参数(传值或传指针),支持嵌套和数组操作。内存对齐影响结构体大小,需注意成员顺序。常见错误包括未初始化、混淆运算符和浅拷贝问题。结构体广泛用于动态内存分配、文件操作等场景,示例展示了动态数组创建和文件读写应用。原创 2025-09-21 00:22:55 · 224 阅读 · 0 评论 -
解码C语言程序内存分布
虚拟内存为进程提供独立 4GB 地址空间,开发者无需关注物理内存。进程内存分四区:栈区存函数参数、局部变量,系统自动管理(默认 8MB),地址高到低增长;堆区动态分配内存,需手动管理,地址低到高增长,易内存泄漏;数据段含.bss(未初始化静态变量)、.data(已初始化静态变量)、.rodata(只读常量);代码段存可执行指令(.text)和初始化代码(.init),属性只读 。原创 2025-09-21 00:22:27 · 176 阅读 · 0 评论 -
解码C语言关键字
本文梳理 C 语言 32 个关键字,分五类:数据类型(12 个,含 char、int 等基础型,short 等修饰型,struct 等复合型);控制语句(12 个,含 if 分支、for 循环、goto 跳转);存储类别(4 个,如 auto、static,定义变量作用域与生命周期);类型修饰符(2 个,const 定义常量、volatile 定义易变变量);其他(2 个,sizeof 算大小、typedef 定类型别名),它们构成 C 语言基础语法。原创 2025-09-21 00:21:44 · 274 阅读 · 0 评论 -
解码C语言函数
本文系统介绍了函数的核心概念与使用要点。首先阐述了函数的基本组成要素,包括返回值类型、参数列表和函数体。其次详细讲解了值传递与地址传递的区别,并分析了静态函数、回调函数等特殊函数类型的特性与应用场景。文章还对比了字符串处理函数(strxxx系列)与内存操作函数(memxxxx系列)的差异,最后提出函数设计的最佳实践,包括接口设计原则、错误处理方式和提升复用性的方法。全文通过代码示例辅助说明,帮助读者全面理解函数的设计与实现。原创 2025-09-21 00:20:46 · 902 阅读 · 0 评论 -
解码C语言指针
摘要:指针是存储变量内存地址的特殊变量,用于间接访问数据,提高效率并实现动态数据结构。基础语法包括声明(int *p)、初始化(p = &num)和解引用(*p)。指针运算以数据类型大小为单位偏移,支持多级指针(如int **pp)。指针与数组密切相关,数组名即首元素地址。函数可通过指针修改外部变量,或返回指针(需注意作用域)。void*为通用指针,const修饰符决定保护指针或数据。野指针指向无效内存,成因包括未初始化、释放后使用或越界访问,需初始化为NULL并谨慎管理内存以避免程序崩溃。原创 2025-09-21 00:19:40 · 878 阅读 · 0 评论 -
解码C语言数组
本文系统介绍了C语言中的数组概念及其应用。主要内容包括: 一维数组:详解了数组的定义、初始化和操作方法,强调数组元素类型一致、固定大小和下标访问的特点。特别指出初始化时的越界问题,区分了编译时错误和运行时错误。 字符数组与字符串:对比分析了两者的本质区别,重点说明字符串必须以'\0'结尾的特性及其对内存占用和操作函数的影响。 二维数组:阐述了二维数组的行列定义方式、内存布局(行优先存储)以及嵌套循环遍历方法。 变长数组:解释了变长数组长度由变量决定,而非长度可变原创 2025-09-20 09:39:26 · 771 阅读 · 0 评论 -
解码C语言九条语句
C语言流程控制结构主要包括选择结构和循环结构。选择结构通过if和switch实现条件分支,if支持单分支、双分支和多分支条件判断,switch则用于整型或枚举类型的多路分支选择。循环结构提供while、do-while和for三种形式,while先判断后执行,do-while至少执行一次,for适合已知循环次数的场景。跳转语句break用于立即终止循环或switch语句,continue则跳过当前循环迭代。这些结构共同构成了C语言程序的基本控制流程。原创 2025-09-20 09:38:20 · 907 阅读 · 0 评论 -
解码C语言运算符
本文总结了C语言中常用的运算符类型及其使用方法,包括算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符等。详细说明了每种运算符的功能、语法示例和运算结果,特别强调了自增/自减运算符的前后缀区别。此外,还提供了运算符优先级表和实用代码示例,帮助读者理解运算符的实际应用场景和运算规则。这些内容为C语言初学者提供了全面的运算符使用指南。原创 2025-09-20 09:29:33 · 437 阅读 · 0 评论 -
解码C语言基础
本文摘要了C语言基础内容,包括: main函数的两种形式(无参和有参)及其返回值说明 man帮助手册的9个章节分类和使用方法 printf和scanf函数的原型及参数说明 常用格式控制符(如%d、%f等)及其修饰符(如对齐、补零等) 基本数据类型(整型)的存储大小、取值范围和适用场景 这些知识点涵盖了C语言程序结构、标准输入输出、格式控制等核心基础内容,适合作为快速参考手册使用。原创 2025-09-20 09:28:05 · 954 阅读 · 0 评论 -
解码C语言环境搭建之Linux子系统与使用vscode连接子系统
本文介绍了在Windows 10系统上安装和使用WSL(Ubuntu 22.04)的完整流程。首先需确保系统版本符合要求并开启WSL功能,通过Microsoft Store安装Ubuntu。文章重点说明了如何将WSL迁移至其他磁盘释放C盘空间,包括导出/导入发行版和恢复默认用户。同时提供了使用VSCode连接WSL、更换软件源以及安装GCC编译器的方法,为开发者搭建了完整的Linux开发环境。整个安装过程配有详细命令和截图指引,适合需要Windows+Linux混合开发环境的用户参考。原创 2025-09-20 09:26:26 · 491 阅读 · 0 评论
分享