C语言
文章平均质量分 89
介绍C语言的基础语法以及使用C语言实现简单的数据结构。
XiaoCCCCCCCCCCCCCCC
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C 语言部分操作符详解 -- 进制转换,原码、反码、补码,位操作符,逗号表达式,操作符的优先级和结合性,整型提升,算术转换
本文介绍了C语言操作符的分类及其应用,包括算术、位运算、移位等操作符的使用方法。重点讲解了二进制与其他进制的转换原理,以及整数的原码、反码、补码表示。通过具体代码示例演示了位操作符(&、|、^、~)的实际应用,并对比了两种变量交换方法。文章还涉及逗号表达式、下标访问和函数调用操作符的特性,最后分析了表达式求值中的整型提升和算术转换规则。这些内容为理解C语言底层运算机制提供了重要参考。原创 2025-07-15 13:12:52 · 654 阅读 · 0 评论 -
C语言函数介绍 -- 库函数与标准库,形参和实参,数组作函数参数,函数的声明和定义,static,extern,函数递归
本文系统介绍了C语言函数的相关概念和使用方法。主要内容包括:1.函数的基本概念,分为库函数和自定义函数两类;2.函数的定义与调用,包括形参和实参的关系、return语句的使用;3.数组作为函数参数的传递方式;4.函数的嵌套调用和链式访问;5.函数声明与定义,以及多文件编程方法;6.static和extern关键字对函数和变量的修饰作用;7.递归函数的工作原理及注意事项。文章通过具体代码示例详细说明了函数各种用法的实现方式,并比较了递归与迭代的优缺点,为C语言函数的使用提供了全面指导。原创 2025-06-29 15:34:42 · 850 阅读 · 0 评论 -
C语言数组介绍 -- 一维数组和二维数组的创建、初始化、下标、遍历、存储,C99 变长数组
【摘要】本文系统地介绍了C语言中数组的概念、创建与使用方法。一维数组部分详细讲解了数组定义、初始化、下标访问、遍历操作、内存存储及sizeof计算元素个数等内容。二维数组部分重点阐述了创建方式、多种初始化方法、行列下标访问、嵌套循环遍历,以及连续存储的特性。最后介绍了C99标准新增的变长数组(VLA)特性,说明其运行时确定数组大小的特点。全文通过大量代码示例,全面展示了数组这一重要数据结构在C语言中的具体应用和底层实现原理。原创 2025-06-23 20:40:53 · 871 阅读 · 0 评论 -
C语言数据类型、变量和常用操作符 -- C语言数据类型,变量创建、分类以及初始化,常见运算符,强制类型转换,printf 函数,scanf 函数
本文摘要: 《C语言基础语法要点解析》系统介绍了C语言核心概念。内容包括:1)数据类型及其长度,使用sizeof操作符测量类型大小;2)signed/unsigned区别及取值范围;3)变量创建、初始化与分类(全局/局部变量);4)算术运算符(+-*/%)的使用规则;5)赋值运算符及复合赋值运算符;6)单目操作符(++/--)的前置后置区别;7)强制类型转换语法;8)输入输出函数详解:printf的占位符(%d,%f等)及格式控制(宽度、对齐、小数位),scanf的数据读取机制、返回值及安全注意事项。全文通原创 2025-06-16 23:57:59 · 847 阅读 · 0 评论 -
初识C语言以及C语言常见概念
在VS上写代码,我们是需要创建项⽬的,直接新建项⽬就可以了。在项⽬中就可以添加源⽂件和头⽂件。C语⾔把 .c 为后缀的⽂件称为源⽂件,把 .h 为后缀的⽂件称为头⽂件。C语⾔中有⼀批保留的名字的符号,⽐如: int 、 if 、 return ,这些符号被称为保留字或者关键字。1.关键字都有特殊的意义。2.程序员自己在创建标识符的时候不能和关键字重复。3.关键字也是不能自己创建的。原创 2024-10-26 02:21:02 · 1253 阅读 · 0 评论 -
C语言程序的编译与链接
1. 翻译环境和运⾏环境1. 翻译环境和运⾏环境我们写的代码是文本文件,计算机能执行的是二进制指令,所以在文件执行之前,需要经过翻译过程把我们写的代码翻译成机器能执行的二进制指令。在ANSI C的任何一种实现中,存在两个不同的环境。第一种是翻译环境,在这个环境中源代码被转换为可执行的机器指令(二进制指令)。第二种是执行环境,它用于实际执行代码。2. 翻译环境:预编译+编译+汇编+链接其实翻译环境是由和两个大的过程组成的,而三个过程。原创 2024-07-01 15:12:58 · 935 阅读 · 0 评论 -
用C语言实现顺序表
概念:数据结构是。数据结构是指。数据结构反映数据的,即数据由那部分构成,以什么⽅式构成,以及数据元素之间呈现的结构。最基础的数据结构:数组。原创 2024-07-02 13:57:29 · 902 阅读 · 0 评论 -
C语言数据在内存中的存储
其实超过一个字节的数据在内存中存储的时候,就有存储顺序的问题,按照不同的存储顺序,我们分为大端字节序存储和小端字节序存储,下面是具体的概念:大端(存储)模式:是指数据的低位字节内容保存在内存的高地址处,而数据的高位字节内容,保存在内存的低字节处。⼩端(存储)模式:是指数据的低位字节内容保存在内存的低地址处,⽽数据的⾼位字节内容,保存在内存的⾼地址处。上述地址的表示是左边为低地址,右边为高地址,左边存储的是低位字节,右边存储的是高位字节,所以在这台电脑上的存储方式是小端存储。原创 2024-06-26 19:12:52 · 1265 阅读 · 0 评论 -
C语言深入了解指针(3)-- 字符指针变量,数组指针变量,函数指针变量,函数指针数组,回调函数
本文系统介绍了C语言中各类指针的概念与应用。主要内容包括:1.字符指针变量的定义与使用;2.数组指针变量的定义、初始化及二维数组传参本质;3.函数指针变量的创建、使用及typedef重命名;4.函数指针数组的定义;5.转移表的实现方法,通过函数指针数组优化多分支选择结构。文章通过代码示例详细展示了各种指针的使用场景,重点分析了指针与数组、函数的关系,并介绍了利用函数指针实现回调函数的机制,为深入理解C语言指针提供了全面的指导。原创 2024-06-21 21:49:03 · 1142 阅读 · 0 评论 -
C语言实现常见O(N^2)的排序算法
1. 冒泡排序是一种非常容易理解的排序。2. 时间复杂度:O(N^2)。3. 空间复杂度:O(1)。4. 稳定性:稳定。原创 2024-08-05 13:27:38 · 1193 阅读 · 0 评论 -
C语言实现希尔排序和堆排序
(1)希尔排序是对直接插入排序的优化(一定程度上防止了逆序的情况)。(2)当gap>1时都是预排序,目的时让数组更接近于有序。当gap==1时,数组已经接近有序的了,这样就会排的很快。整体而言,可以达到优化的效果。(3)希尔排序的时间复杂度不好计算,因为gap的取值方式很多,导致很难去计算,因此在好多书中给出的希尔排序的时间复杂度都不固定。如果gap按照gap = (gap / 3) + 1的方式来取值,这里给出一个大概的时间复杂度为O(N^1.3)。(4)稳定性:不稳定。原创 2024-08-05 14:06:21 · 528 阅读 · 0 评论 -
C语言中的动态内存管理 -- malloc,calloc,realloc,free,常见动态内存的错误,柔性数组
本文介绍了C语言中动态内存分配的相关知识,主要包括malloc、free、calloc和realloc等函数的使用方法及常见错误。动态内存分配能够灵活处理运行时才能确定大小的内存需求,避免了静态内存分配的局限性。文章详细讲解了动态内存函数的特性、使用注意事项和常见错误类型,如内存泄漏、越界访问等问题。此外,还介绍了柔性数组的特点和使用方法,以及C/C++程序内存区域的划分(栈区、堆区、静态区和代码段)。正确使用动态内存分配技术对程序性能至关重要,需要特别注意内存的申请和释放逻辑。原创 2024-06-29 12:51:18 · 1272 阅读 · 0 评论 -
C语言实现多种快速排序
接下来介绍三种最基本的快速排序版本、非递归版本以及两种对快速排序的优化。2.快速排序hoare版本。原创 2024-08-10 19:54:46 · 1156 阅读 · 0 评论 -
C语言预处理详解
2. #define定义常量。原创 2024-07-01 16:18:55 · 909 阅读 · 0 评论 -
C语言中的字符函数和字符串函数
本文介绍了C语言中常用的字符串处理函数及其模拟实现方法,主要包括以下内容:1. 字符分类与转换函数(islower/toupper等);2. 字符串长度计算函数strlen及其三种模拟实现;3. 字符串复制函数strcpy和追加函数strcat的实现原理;4. 字符串比较函数strcmp的工作原理;5. 有限长度操作函数strncpy/strncat/strncmp;6. 子串查找函数strstr的实现方法;7. 字符串分割函数strtok的使用方式;8. 错误码转换函数strerror的应用。文章通过代码原创 2024-06-22 14:31:14 · 1017 阅读 · 0 评论 -
C语言中的自定义类型-- 结构体、内存对齐,结构体大小计算,位段,联合体,联合体大小计算,枚举
本文介绍了C语言中的三种复合数据类型:结构体、联合体和枚举类型。首先详细讲解了结构体类型的声明、内存对齐规则、传参方式以及位段的实现与应用;其次分析了联合体类型的特点、内存分配方式及大小计算方法;最后阐述了枚举类型的声明方式及其相对于#define常量的优势。文章重点剖析了结构体内存对齐的原因和规则,解释了位段节省内存的原理及其跨平台问题,并对比了联合体与结构体的内存使用差异。通过多个代码示例展示了这些数据类型的实际应用场景,如判断机器字节序、网络协议数据报设计等,帮助读者深入理解C语言复合数据类型的特性和原创 2024-06-28 13:16:18 · 1238 阅读 · 0 评论 -
C语言实现二叉树以及二叉树的详细介绍 -- 树的概念,二叉树的概念,特殊的二叉树,堆的概念及实现,二叉树的链式结构及实现,二叉树的前,中,后序遍历,二叉树的建立和销毁
本文系统介绍了树与二叉树的数据结构及其实现方法。主要内容包括:1) 树的基本概念、术语和表示方法;2) 二叉树的定义、性质、存储结构和特殊类型(如满二叉树、完全二叉树);3) 堆的实现与应用,包括堆排序和TOP-K问题求解;4) 二叉树的链式结构、遍历算法(前序、中序、后序、层序)及常见操作实现;5) 二叉树的创建、销毁和完全性判断。通过递归和队列等数据结构,详细阐述了二叉树相关算法的实现原理,并提供了完整的参考代码实现。原创 2024-07-18 14:40:48 · 860 阅读 · 0 评论 -
C语言实现栈
栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作,栈中的数据元素遵守后进先出LIFO(Last In First Out)原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈,出数据也在栈顶。原创 2024-07-09 12:22:52 · 601 阅读 · 0 评论 -
C语言中的文件操作
1. 为什么使⽤⽂件1. 为什么使⽤⽂件如果没有文件,我们写的程序的数据是存储在电脑内存中的,如果程序退出,内存回收,数据就丢失了,要将数据进行,我们可以使用文件。2. 什么是⽂件磁盘(硬盘)上的文件是文件。但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件(从文件功能的角度来分类)。2.1程序文件程序文件包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)。原创 2024-06-29 15:23:46 · 841 阅读 · 0 评论 -
C语言实现计数排序
(1)创建一个新的数组,数组的大小K = 原数组中的最大值(max) - 最小值(min) + 1,用于统计相同元素出现的次数。(2)根据统计的结果按数组下标的顺序返回到原来数组中。原创 2024-08-07 14:51:01 · 381 阅读 · 0 评论 -
用C语言实现单链表
概念:链表是一种,但是。。链表的结构跟火车车厢相似,只需要将火车里的某节车厢去掉/加上,不会影响其他车厢,每节车厢都是独立存在的。与顺序表不同的是,链表里的每节“车厢”都是下来的空间,称之为“节点的图中指针变量plist保存的是第一个节点的地址,我们称plist此时“指向”第一个节点,如果我们希望plist“指向”第二个节点时,只需要修改plist保存的内容为0x0012FFA0.原创 2024-07-03 13:31:05 · 1039 阅读 · 0 评论 -
C语言实现双向链表
通过名字可以看出,双向链表实际上是带头双向循环链表。相对于之前的单链表来说,带头的意思是存在一个“哨兵位”,故双向链表需要初始化,初始化就是创建一个“哨兵位节点”,双向的意思表示这个链表既能从前往后也能从后往前,所以在双向链表的结构里面应该也含有一个向前指向的指针prev,为了实现循环的效果,在每次创建新的节点是,该节点的next指针和prev指针都应该指向自己。原创 2024-07-04 11:06:26 · 1396 阅读 · 0 评论 -
C语言内存函数
1. memcpy使⽤和模拟实现1. memcpy使⽤和模拟实现。原创 2024-06-23 15:06:10 · 786 阅读 · 0 评论 -
C语言实现队列
队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out).入队列:进行插入操作的一端称为。出队列:进行删除操作的一端称为。原创 2024-07-09 13:37:58 · 615 阅读 · 0 评论 -
C语言实现归并排序
(1)归并的缺点在于需要O(N)的空间复杂度,归并排序的思考更多的是解决在磁盘中的外排序问题。(2)时间复杂度:O(N*logN)(3)空间复杂度:O(N)(4)稳定性:稳定。原创 2024-08-10 20:15:04 · 868 阅读 · 0 评论 -
C语言深入了解指针(2)-- 数组名的理解,数组传参的本质,二级指针,指针数组
本文系统讲解了C语言中数组与指针的相关概念。主要包括:1.数组名本质是首元素地址,但sizeof(数组名)和&数组名例外;2.指针访问数组的多种等价形式;3.一维数组传参本质是传递首地址;4.二级指针及解引用规则;5.指针数组的定义和使用;6.如何用指针数组模拟二维数组(内存不连续)。特别指出数组传参时的地址特性及指针数组与真正二维数组的内存差异,为理解数组和指针的关系提供了清晰指导。原创 2024-06-09 14:12:14 · 631 阅读 · 0 评论 -
C语言深入了解指针(1)-- 指针变量和地址(指针),指针变量类型的意义,const 修饰指针,指针运算,野指针,assert 断言,传址调用
在计算机中把内存划分为⼀个个的内存单元,每个内存单元的⼤⼩取1个字节。其中,每个内存单元,相当于⼀个学⽣宿舍,⼀个字节空间⾥⾯能放8个⽐特位,就好⽐同学们住的⼋⼈间,每个⼈是⼀个⽐特位。每个内存单元也都有⼀个编号(即为地址)(这个编号就相当于宿舍房间的⻔牌号),有了这个内存单元的编号,CPU就可以快速找到⼀个内存空间。C语⾔中给地址起新的名字叫:指针。内存单元的编号 == 地址 == 指针。 计算机中内存大概如下图: 在C语⾔中创建变量其实就是向内存申请空间,⽐如:原创 2024-06-06 13:12:38 · 1252 阅读 · 0 评论 -
用C语言完成一个简单的扫雷游戏
(1)使用控制台实现简单的扫雷游戏(2)可通过菜单实现继续玩游戏或者退出游戏(3)扫雷的棋盘是9*9的格子(4)默认随机布置10个雷(5)排查雷a. 如果位置不是雷,就显示周围有几个雷b. 如果位置是雷,就炸死游戏结束c. 把除10个雷之外的所以非雷格子都找出来,排雷成功,游戏结束。原创 2024-04-30 14:36:58 · 505 阅读 · 2 评论 -
C语言中的分支循环语句 -- 分支语句,循环语句,关系操作符,条件操作符,逻辑操作符,break,continue,goto
C语言中的分支与循环语句是实现程序控制结构的基础。文章详细介绍了顺序结构、选择结构(if/switch语句)和循环结构(while/for/do while)的语法与应用场景,重点讲解了各语句的执行流程和注意事项(如悬空else问题、switch的break用法)。通过示例代码演示了猜数字游戏的实现,并解析了关系操作符、条件操作符和逻辑操作符的使用技巧(包括短路特性)。最后探讨了break/continue的控制作用及goto语句的慎用原则,为C语言初学者提供了全面的结构化编程指导。原创 2024-04-20 20:27:57 · 846 阅读 · 3 评论
分享