
C语言
文章平均质量分 91
万我.
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C语言 详谈预处理
本文介绍了C语言中的预处理指令和宏定义。主要内容包括:1. 预定义符号(FILE、__LINE__等)的使用方法;2. #define定义常量和宏的语法及注意事项,强调宏参数要加括号以避免优先级问题;3. 宏和函数的对比,分析各自的优劣势;4. #和##运算符的作用;5. 条件编译指令和头文件包含的两种方式;6. 防止头文件重复包含的两种方法(#ifndef和#pragma once)。文章通过具体示例说明了宏定义中可能遇到的问题及解决方案,并提供了命名约定等实用建议。原创 2025-08-06 14:33:37 · 1019 阅读 · 0 评论 -
C语言 详谈编译和链接
C程序从源代码到可执行程序需要经过翻译环境和运行环境两个阶段。翻译环境包括编译和链接两大过程:1. 编译分为预处理(处理宏定义、头文件包含等)、词法语法分析、生成汇编代码和机器指令;2. 链接将多个目标文件合并,完成地址分配和符号重定位。运行环境则负责程序加载、执行和终止,包括内存分配、函数调用栈管理等。整个过程涉及编译器、汇编器、链接器的协同工作,最终生成可在特定平台执行的文件。原创 2025-08-06 14:10:08 · 892 阅读 · 0 评论 -
C语言 详谈文件操作
文件是计算机中存储数据的重要方式,用于实现数据持久化。本文介绍了文件的基本概念(程序文件和数据文件)、文件名组成(路径+主干+后缀)、文件类型(文本文件和二进制文件)及其存储区别。重点讲解了C语言中的文件操作,包括文件指针(FILE*)、打开关闭文件(fopen/fclose)、顺序读写和随机读写函数(fgetc/fputc/fseek等)。最后说明了文件读取结束的判断方法(不能直接用feof)和文件缓冲区的重要性,强调操作文件后必须刷新缓冲区或关闭文件。这些内容为理解和使用C语言文件操作提供了系统指导。原创 2025-08-05 06:30:00 · 1780 阅读 · 0 评论 -
C语言 详谈自定义类型: 联合和枚举
本文介绍了C语言中的两种自定义类型:联合体和枚举类型。联合体(共用体)的特点是所有成员共享同一块内存空间,其大小至少为最大成员的大小。文章通过代码示例展示了联合体的声明、内存布局及大小计算,并举例说明了联合体在节省内存空间方面的优势。枚举类型用于列举可能的取值,具有增加代码可读性、类型检查严格等优点。文中详细讲解了枚举类型的声明方式、常量赋值规则及其使用方法,并与#define定义的常量进行了比较。原创 2025-08-05 06:00:00 · 1042 阅读 · 0 评论 -
C语言 详谈自定义类型:结构体
本文介绍了C语言中自定义类型结构体的使用,包括结构体声明、变量创建和初始化,以及结构体的特殊声明和自引用方式。重点讲解了结构体内存对齐规则和位段的实现原理,指出位段虽然节省空间但存在跨平台问题。文章还比较了结构体传参时传值和传址的性能差异,建议使用地址传参以提高效率。最后说明了位段在网络协议等场景中的应用价值,并指出位段成员不能直接使用scanf输入等注意事项。原创 2025-08-04 07:00:00 · 1190 阅读 · 0 评论 -
C语言 详谈指针(终章)
本文系统讲解了C语言指针相关概念,重点介绍了回调函数的定义和实现原理,通过qsort函数的具体应用展示了回调函数的使用方法。文章详细解析了qsort函数对结构体数据的排序实现,并模拟实现了qsort函数的核心逻辑。同时对比分析了sizeof和strlen的区别,阐明了sizeof计算内存大小而strlen计算字符串长度的本质差异。最后总结了数组名的三种不同含义,为C语言指针知识体系做了完整梳理。原创 2025-08-04 06:00:00 · 616 阅读 · 0 评论 -
C语言 深⼊理解指针(三)
本文深入探讨了C语言中指针的高级应用,主要包括:字符指针的本质是存储字符串首字符地址而非字符串本身;数组指针变量是指向数组的指针变量,其定义方式为int (*p)[10];二维数组传参本质是传递第一行一维数组的地址;函数指针变量用于存储函数地址,可通过函数指针调用函数;函数指针数组可实现"转移表"功能,如计算器的优化实现。文章通过代码示例详细解析了指针的特殊用法和注意事项,帮助读者深入理解指针在C语言中的高级应用。原创 2025-08-03 09:00:00 · 1206 阅读 · 0 评论 -
C语言 深入理解指针(二)
本文主要探讨了C语言中指针与数组关系的进阶知识。首先指出数组名本质上是数组首元素的地址,但在sizeof和&操作时例外。接着介绍如何使用指针访问数组元素,表明p[i]等价于*(p+i)。然后分析数组传参的本质是传递首元素地址,因此函数内无法直接获取数组大小。最后讲解二级指针概念和指针数组的应用,包括如何用指针数组模拟二维数组。这些知识点深入剖析了C语言中指针与数组的内在联系和操作细节。原创 2025-08-03 07:00:00 · 900 阅读 · 0 评论 -
C语言 详谈数据在内存中的存储
文章摘要:本文介绍了计算机中整数和浮点数的存储方式。整数采用补码存储以实现符号位统一处理和加减法运算简化。详细讲解了大小端字节序的概念及其判断方法:大端模式将高位字节存于低地址,小端模式相反。浮点数存储遵循IEEE 754标准,分为符号位S、指数E和有效数字M三部分,其中E采用移码表示,M默认省略前导1。通过实例演示了相同内存数据在不同解读方式下的差异现象。原创 2025-08-02 17:40:28 · 974 阅读 · 0 评论 -
C语言 详谈动态内存管理
摘要:本文介绍了C语言中的动态内存管理,重点讲解了malloc、free、calloc和realloc四个关键函数。动态内存分配解决了静态内存分配大小固定的问题,让程序运行时能根据需要申请和释放内存空间。malloc用于申请空间,free用于释放空间,calloc在分配时会将内存初始化为0,而realloc则可以调整已分配内存的大小。文章通过示例代码演示了这些函数的使用方法,并强调了内存分配失败检查和指针管理的重要性,为C语言程序员提供了动态内存管理的基础知识。原创 2025-07-26 18:00:12 · 891 阅读 · 0 评论 -
C语言 内存操作函数
C语言的内存操作函数memcpy、memmove、memset和memcmp简介:memcpy实现内存拷贝(不处理重叠区域),memmove可处理内存重叠的拷贝,memset用于内存初始化,memcmp用于内存比较。文章通过代码示例展示了这些函数的使用方法,并提供了memcpy和memmove的模拟实现代码,重点说明了它们的功能差异和使用场景(如重叠内存处理),帮助开发者正确选择和使用这些内存操作函数。原创 2025-07-25 21:57:40 · 541 阅读 · 0 评论 -
C语言 深入理解指针 (一)
C语言指针核心概念精要 指针是C语言的核心概念,本质是内存地址的表示。计算机内存被划分为字节单元,每个单元有唯一地址(指针)。通过指针变量存储地址,配合解引用操作符(*)可访问或修改目标数据。 关键知识点: 指针变量大小:32位系统4字节,64位系统8字节 指针类型决定解引用时的操作权限(char操作1字节,int操作4字节) 指针运算:+/-整数根据类型移动,指针相减得到元素间隔 const修饰:左const保护目标数据,右const保护指针本身原创 2025-07-25 17:56:43 · 813 阅读 · 0 评论 -
C语言 一文详解常用的字符串操作函数及模拟实现
本文介绍了C语言中常用的字符串和内存操作库函数,主要包括字符分类函数(如islower)、字符串操作函数(如strlen、strcpy、strcat、strcmp)及其模拟实现方法,以及strstr、strtok、strerror等函数的用法。文章通过代码示例演示了这些函数的具体应用,并提供了相关学习资源网站。这些函数是C语言编程中的基础工具,掌握它们对字符串处理至关重要。原创 2025-07-24 17:34:01 · 753 阅读 · 1 评论 -
C语言 一维数组和二维数组
本文介绍了C语言中数组的基本概念和使用方法。主要内容包括:一维数组的定义、初始化和使用方法,通过下标访问数组元素;数组在内存中的连续存储特性;使用sizeof计算数组元素个数;二维数组的定义、初始化和访问方式;字符串作为字符数组的特殊性;以及数组与指针的联系,包括数组传参时的退化现象和指针访问数组的方式.原创 2025-07-22 16:01:41 · 1190 阅读 · 1 评论 -
C/C++ 详谈结构体大小计算(内存对齐)
C/C++结构体大小计算(内存对齐);修改默认对齐数;C++继承场景下的类的大小的计算;如何定义一个计算成员变量在类中偏移量的宏?原创 2025-07-21 17:45:55 · 835 阅读 · 2 评论 -
C语言 函数详解
本文全面介绍了C语言函数的核心概念与应用。从函数的基本定义出发,阐述了数学函数与编程函数的共通性,重点讲解了C语言中函数的声明、定义和调用过程。文章深入探讨了函数参数传递的多种方式(值传递、地址传递等),函数指针的使用方法,以及递归函数的实现原理与注意事项。特别强调了优秀函数设计应遵循的原子性、可预测性、防御性等原则,并通过示例代码展示了如何编写高效、健壮的函数。最后提及了函数调用时的栈帧机制,帮助读者理解函数调用的底层实现。原创 2025-07-19 18:06:06 · 887 阅读 · 0 评论 -
C语言 关于位运算的一些算法和算法题
本文总结了常见的位运算算法及其应用。主要内容包括:1)基本位运算符及其特性(如左移、右移、按位取反等);2)二进制位操作技巧,包括判断某位值、修改位值、提取和删除最右侧的1(lowbit操作);3)位图思想在哈希中的应用;4)异或运算的运算律(如a^0=a、a^a=0等)。文章还列举了这些算法在LeetCode题目中的应用,如位1计数、汉明距离、查找唯一数字等问题。最后强调位运算优先级问题,建议多用括号确保运算顺序。这些位运算技巧在解决算法问题时具有高效性和实用性。原创 2025-07-14 17:48:16 · 1108 阅读 · 0 评论 -
C语言 分支语句和循环语句
本文介绍了C语言中的分支语句和循环语句。分支语句包括if语句(单分支、双分支、多分支)和switch语句,并指出了常见的赋值陷阱和break的用法。循环语句讲解了while和for循环的基本结构、三个组成部分(初始条件、循环条件、更改条件)及区别。文章建议通过牛客网等平台练习这些基础语法,强调实际练习对提升编程能力的重要性。最后提供了九九乘法表等示例说明循环语句的应用。原创 2025-07-13 17:39:15 · 711 阅读 · 0 评论 -
C语言 一问详解static关键字
摘要:本文深入解析C语言中static关键字的三种用法:修饰局部变量、全局变量和函数。静态局部变量在程序加载时初始化,生命周期随进程;静态全局变量和函数具有内部链接属性,仅限当前文件使用。文章还对比了C++中static的不同实现,指出C++允许运行时初始化静态局部变量,并解释了编译器通过隐藏标志变量实现的延迟初始化机制。最后强调static的本质是改变链接属性,从外部链接转为内部链接原创 2025-07-12 20:08:16 · 813 阅读 · 0 评论 -
C语言 运算符
本文介绍了C语言中的主要运算符类型及其用法。包括算术运算符(+、-、*、/、%,注意整数除法特性)、赋值运算符(=及其复合形式)、关系运算符(==、>、<等,强调与赋值运算符的区别)、自增/自减运算符(++、--的前后置区别)、位运算符(&、|、^)和移位运算符(<<、>>)。特别指出关系运算符的返回值特性(0为假,非0为真)和常见错误(混淆=与==)。文章还简要提及二进制概念,为理解位运算做铺垫。最后强调运算符虽丰富但需谨慎使用。原创 2025-07-12 18:03:49 · 1351 阅读 · 0 评论 -
简单说说C语言标准库和嵌入式C语言标准库
MicroLIB 库中的实现方法,定义_weak弱函数。他的原理是:在编译链接的时候,使用用户重写的fputc函数的地址,代替弱函数int fputc(int /ch/, FILE /fp/)函数的地址,如果用户没用重写,就使用弱函数_weak int fputc(int /ch/, FILE /fp/)函数的地址(这时的编译器对每个函数生成符号表目的时候,还会标记强弱属性,链接器最终会选择强属性的函数或者变量的地址)。原创 2025-07-11 15:26:27 · 997 阅读 · 0 评论 -
C语言 详谈变量和常量
本文介绍了C语言中变量与常量的基本概念。变量是程序运行过程中可变化的量,如游戏中的血量值,通过类型和名称定义;常量是不可修改的值,可用#define或const定义。C语言提供基本数据类型(整型、浮点型)和自定义类型(结构体、枚举等),变量大小取决于类型和系统架构。全局变量与局部变量的生命周期不同,存储位置也有差异。文章还对比了宏定义与const常量的优缺点,并简要说明变量在内存中的分布情况(栈、堆、只读数据段等)。最后强调了注释的重要性,为后续编程学习奠定基础。原创 2025-07-11 15:21:31 · 1479 阅读 · 0 评论 -
C语言从 0 到 1
本文介绍了C语言编程的基础知识。首先解释了计算机语言的概念,将编程语言类比为人类语言,强调C语言作为与计算机沟通的重要工具。文章推荐使用Visual Studio 2019/2022作为初学者开发工具,详细说明了创建第一个C程序"Hello World"的步骤。此外还介绍了调试技巧,包括断点设置、逐过程/逐语句调试方法。文中特别指出main函数是C程序的唯一入口,并解释了头文件和库函数的基本概念。最后通过计算机"BUG"的起源故事,强调了调试能力对程序员的重要性。原创 2025-07-11 08:30:19 · 740 阅读 · 0 评论