![](https://i-blog.csdnimg.cn/direct/fee5c3e3704542a297b8462d6d706db3.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
c语言
简介关于c语言的相关知识,帮助大家理解和更好的使用c语言的知识。
杨和段
人生若只如初见,何事秋风悲画扇
展开
-
c语言的数组详解
各位看官好。这是鄙人发布的第四篇博客。今天我们讲的是c语言里面的数组。这是鄙人在上一篇博客里面有提及过的,今天我们就认真的来讲解一下,c语言里面的数组的创建与使用吧!原创 2024-01-21 16:50:00 · 949 阅读 · 2 评论 -
c语言的数据类型与变量
这就是算数操作符的基本使用方法,乘除也是如此。当然还有一个特殊的数据类型,它并不是像上述的那些类型一样,是可以有一个或多个成员的,它只是用于 用于表示真或假,只有两个值 true和false。在上述中有一个特殊就是,char类型的符号位是不确定的,是有符号位还是无符号位这个要以编译器来取决至于为什么,这个鄙人也不是太了解,但是char类型符号位的不确定却是事实,希望各位看官多留意。这个就是变量的初始化,这个需要注意的是,初始化值要符合数据类型,不要埋头吭哧吭哧的一通写,运行的时候才发现问题,那可就麻烦了。原创 2024-01-18 19:10:35 · 979 阅读 · 3 评论 -
c语言的三种循环语句(for,while,do-while)
各位看官们好。这是鄙人写的第五篇博客了,今天要与大家分享的是在c语言中一定会碰见的三种循环,for,while,do-while。这些都有循环语句怎么用和有哪些使用方法嘞。就让我们一起看看吧。原创 2024-01-23 21:49:19 · 1111 阅读 · 2 评论 -
scanf与printf详解
所以,储存字符串时,很可能会超过数组的边界,导致预想不到的结果。为了防⽌这种情况,使⽤ %s 占位符时,应该指定读⼊字符串的最⻓⻓度,即写成 %[m]s ,其中的 [m] 是⼀个整数,表⽰读取字符串的最⼤⻓度,后⾯的字符将被丢弃。你也可以不适用装换说明符,直接打印,你需要将要打印的项目放在英文输入法的""里面这样就可以运行看效果了,但是一看这个代码就比较挫,感觉没有技术含量,所以个人还是比较推荐大家使用上面的方式,并且上面的方式对于以后的使用也是很便利的。这里就是用上一篇我写的变量的创建并且初始化。原创 2024-01-19 18:40:53 · 1230 阅读 · 2 评论 -
栈实现队列与队列实现堆
好了,以上就是关于栈与队列相互实现的相关知识吧。当然这些有其中有很多可以优化的地方,大家可以细心的观察一下,然后呢其中关于这个博客大家其实可以相当于课后拓展,因为确实这样没必要把他作为一个非常重要知识点,大家只需要知道如何使用就可以了。最主要的还是需要大家熟练使用对业余战的单个的相关知识来,希望这篇不太对大家会有帮助,然后今天的讲解就到这里了。原创 2024-07-05 11:57:22 · 875 阅读 · 0 评论 -
C语言----顺序表(含代码)
然后我们创建顺序表的时候,有两种方法,一种是动态的一种的静态的。然后嘞我这里是用动态的。所谓动态,就是边创建边使用,静态就是一下子就创建好了内存。这样的话明显动态的优势更大。那么我们也不多说其他的了。我们直接就来写写如何实现顺序表了。原创 2024-07-08 17:57:00 · 666 阅读 · 9 评论 -
判断单链表是否带环且返回节点
大家最主要的是了解这个代码的逻辑。这些代码实际上是运行起来其实没有太大的作用,最主要的是大家的逻辑能力能够得到有所锻炼,这相当于我们平常学习的有教学意义。实践的话可能没有多大作用。然后这上面就是我想与大家分享的知识了,然后肯定还有一些方法,但我不是很清楚,希望大家能在评论区里面留言。原创 2024-06-19 19:05:05 · 771 阅读 · 1 评论 -
排序进阶----归并排序,选择排序
总体来说归并排序就是将数组分化分化分化到只有一个元素的时候,我们是在合并比较合并循环。当然我们需要创建一个新的数组来存储,所以这就是归并排序的大概思路了。其实总体来说,大家只需要知道上面我们的那张图片的话就有一个大概思路了,然后可以以此发挥,从而把整个思路推出来。return;//递归分化到最小的那个元素去int be = l;//把区间确定下来int i = l;//表示合并的时候的数组位置while (be原创 2024-06-05 13:05:49 · 690 阅读 · 6 评论 -
C语言----栈(附源代码)
那么接下来我们就尝试用代码来实现栈,我们知道栈这个东西首先要有吧。所以我们就先来创建栈。既然我们需要创建一个栈,就用结构体。结构体里面有什么东西嘞。我们就简单点首先要有内容吧。然后就是栈顶、栈底。因为我们上面写了入栈和出栈。int top;int base;}stack;以上就是栈的基本几个实现了。然后下面的栈代码的实现了。大家可以自取。#define STACK_INIT_SIZE 100 //栈的初始容量#define STACKINCREMENT 10 //容量增量//栈底指针。原创 2024-05-19 14:57:45 · 530 阅读 · 1 评论 -
排序进阶----快速排序
那么说明的就是我们快速拍摄的大概所有内容了。当然还有一种优化其实也是可以的,叫做挖坑法。这个如果大家感兴趣的话可以自己去了解一下。当然我的内容是不是很完全的。所以大家可以在评论区里面也说一下,自己感兴趣的话,我下一篇博客会补充的。原创 2024-06-01 23:53:26 · 595 阅读 · 3 评论 -
c语言----队列
好了,上面就是关于队列的大部分使用方法了。当然还有很多对于这个的延伸,这就可能会用在后面的题目上。后面的面试题之类的。那可以多尝试一下练题,然后就能加深一下对队列的一些的相关知识的巩固。那么接下来来我就这样所有的代码给大家看一下。}QueueNode;}Queue;assert(pq);assert(pq);free(cur);cur = next;assert(pq);exit(-1);else。原创 2024-07-04 16:16:29 · 1082 阅读 · 8 评论 -
简介时间复杂度
好了,当大家看到这里我想应该就对计算时间复杂度有一些了解了吧。反正我一直用的都是带几个值进去计算一下。然后就可以得出一个大概的逻辑这样得出一个大概的就可以了。那么今天的时间复杂度计算就到这里了。下一篇我们会分享一下空间复杂度的计算。原创 2024-07-06 19:13:06 · 823 阅读 · 2 评论 -
简介空间复杂度
主要是大家需要了解一下和大概知道空间复杂度是如何计算的,这样就可以了。因为对于空间复杂度要求的话,其实题目还算比较少的,也像我们上面说过,除了一些在面试的时候需要考虑的话,至少我现在个人很少遇见对空间复杂度有要求的。总之大家还是需要了解一下如何计算嘛,然后这里就是今天这篇博客想与大家分享的吧。当然还有很多遗漏的东西,希望大家可以在评论区留言,然后我好补充。原创 2024-07-07 16:17:34 · 1055 阅读 · 4 评论 -
数据结构----堆的实现(附代码)
那么当我们了解了堆是什么之后,那么我们就来实现了。首先想堆栈既然这两个字都可以组成一个词了,那么我们实现堆可不可以用实现栈的方法来实现。所以我们首先要来定义一个结构体,来存放我们要放的东西和下标。为什么有下标嘞其实大家就理解为下一个数据的坐标嘛。毕竟堆是抽象的,不想我们数组那样用下标可以直接找,那么我们结构体只有这些嘛,我们数组建立是不是要需要确定它的起始容量,就算我们最开始不确定去起始容量,也需要确定它的数组内容。那么我们是不是需要在结构体里面确定好它的起始容量?原创 2024-05-25 17:53:14 · 917 阅读 · 1 评论 -
排序进阶----插入排序,希尔排序
大家可以想一下,我们如果以扑克牌为例,我们利用冒泡排序的话,每一个位置就要对比一下,这很麻烦,很耗时间的。但是如果我用插入排序的话,我们以第一个数为例,一次向后对比,如果他比接下来对比的数都大的话,那么我就先把战船一直比较比他更大的数,那么我就把它插入在前面。我们先从第一趟开始,比如说我们就先走第一趟,以下标为零开始的与下标为一对比,如果他比第一个大的话,那么这一趟就结束,我们就只循环一次。当然希尔排序其实是有一点困难的,大家需要多理解一点多看一下,其实相对还是比较简单的,只需要理解之后大家都能写出来的。原创 2024-05-29 09:32:42 · 1123 阅读 · 8 评论 -
C语言----冒泡排序进阶
好,那么接下来我们就用代码来更加详细的讲解。不知道我的代码与大家想的是否有太多的不同之处。或者大家认为这样的代码还有地方可以简洁,大家可以在下方评论区不腻赐教。但其实大家看了上面的代码是否觉得有点啰嗦且繁琐啊。如果我们运气不好的话。这个代码我们要遍历36遍。空间复杂度是否有时候不好满足呀。并且我们如果后面改了,不用整型数组,我们有char类型数组的话。这个代码是不是就不能直接使用了。当然我们可以依照这个模板写一个char类型的冒牌排序,但是大家是否觉得再写一个的话,是否就有点太麻烦了。原创 2024-03-03 13:23:57 · 863 阅读 · 2 评论 -
C语言操作符详解
各位看官们好,这是鄙人的第9篇博客了,这次我们来了解C语言中的操作符。虽然我们在前面的博客中已经提到过一些操作符了,这里我们来详细的写出C语言中的操作符了,并且新春之际,鄙人在这祝各位看官新年快乐!算数操作符(+ - / %)位移操作符(>)位操作符(& | ^与,或,异或)赋值操作符(=)单,双目操作符。原创 2024-02-11 22:29:50 · 1212 阅读 · 2 评论 -
C语言----链表
那么大家知道创建一个链表节点如同火车要先把壳造出来,然后在天东西进去,那么我们要先定义好节点的“壳”。那么我们先创建一个头文件Slist.h和源文件Slist.c。一个是定义数据的,讲文明需要用到的库函数的头文件全部放进去。然后需要定义的东西也放进去。那么我们肯定还需要一个实现代码的文件,那么我们再创建一个源文件text.h。来实现我们的代码。好但我们创建好了这些前置条件后,那么我们就来看看这个单链表的定义。大家先看我们的主要知识,我们说单链表里面除了存放的内容外就是下一个节点的地址了。那么简单呀。原创 2024-04-23 14:00:00 · 820 阅读 · 0 评论 -
数据结构——二叉树
设二叉树的根节点所在层数为1,层序遍历就是从所在二叉树的根节点出发,首先访问第一层的树根节点,然后从左到右访问第2层上的节点,接着是第三层的节点,以此类推,自上而下,自左至右逐层访问树的结点的过程就是层序遍历。鄙人:堆嘞,大家可以看到这个字,就是一堆东西,那么我们将一堆数据看作是完全二叉树的结构存储在一维数组中,如果这棵完全二叉树能满足所有的父亲节点都不大于它的孩子节点,那么这样的数据结构就叫做小堆,相反,如果所有父亲节点都不小于它的孩子节点,那么这个数据结构就叫做大堆。第二层最多有2的二次方减1个结点。原创 2024-02-16 22:21:04 · 975 阅读 · 2 评论 -
C语言----贪吃蛇(附源代码)
因为我的贪吃蛇代码是阉割版所以与我们以前玩过的贪吃蛇是有一点差异的。但是大家还可以依据自己的想法进行优化和延伸。这里鄙人就简单的提供一下拙见,希望大家见谅。原创 2024-04-28 09:30:00 · 1470 阅读 · 3 评论 -
C扫雷游戏
各位看官们好,这是鄙人写的第八篇博客了,扫雷大家都玩过吧,在我以前玩的时候真的不懂游戏规则,时常踩雷,当时一度觉得扫雷是世界上难度最大的游戏了[捂脸]。现在稍微年长了一点了,稍微理解了扫雷的规则,尝试着写一个实现扫雷的简单程序。大家一起来看看吧。原创 2024-02-01 19:13:33 · 712 阅读 · 2 评论 -
C语言----预处理(详解)
关于预定义符号,我暂时只知道几个。并且我知道的这几个对于我们现在还在学习阶段感觉没什么帮助,哈哈。我知道的这几个预定义符号应该对于我们以后工作时写日志,应该是有帮助吧。这个有什么作用还是等大家日后自己定夺吧,这里我就先给大家引出来。__FILE__ //进⾏编译的源⽂件__LINE__ //⽂件当前的⾏号__DATE__ //⽂件被编译的⽇期__TIME__ //⽂件被编译的时间__STDC__ //如果编译器遵循ANSI C,其值为1,否则未定义。原创 2024-03-31 11:58:30 · 1271 阅读 · 2 评论 -
c语言指针讲解
指针是c语言中的一个重要概念,所谓指针,就是指向内存中某个变量的地址的变量。这好比你家庭地址。当有朋友要来做客的哈,那么就需要地址。c语言中就是当系统要使用数据的话,就需要指针来快速找到数据。指针就可以简单理解为一个地址。原创 2024-01-30 10:42:22 · 706 阅读 · 2 评论 -
C语言----杨辉三角
各位看官们好。学习到这里想必大家应该对C语言的了解也是很深刻的了吧。但是我们也不能忘记我们一起学习的知识啊。在我们以前学习C语言的时候我想大家应该都听说过杨辉三角吧。虽然我们把其中的规律找到那么这个代码就简单很多了。那么接下里我们就来讲讲杨辉三角。首先我们先来看看三角长什么样子:我们可以看到我们外围都是1,然后几行就有几个数这些是一眼能看出来的。然后就是我们看看每行数字左右对称,由1开始逐渐变大。(从第三行开始)被两边的 1 包围着的数据中,每个数等于它上一行前一列的数和上一行本列数之和。原创 2024-05-08 14:33:26 · 1273 阅读 · 2 评论 -
C语言————字符函数与字符串函数
在编程的过程中,我们经常要处理字符和字符串,为了⽅便操作字符和字符串,C语⾔标准库中提供了⼀系列库函数,如追加,拷贝,替换等等接下来我们就学习⼀下这些函数,并且自实现。原创 2024-03-10 10:00:00 · 907 阅读 · 2 评论 -
C语言----简单讲解编译与链接
(关于什么是宏定义我们会在下一篇博客中讲解)•处理所有的条件编译指令,如:#if#ifdef#elif#else#endif。(这个条件编译我们也会在下一篇博客中写出的)•处理#include 预编译指令,将包含的头⽂件的内容插⼊到该预编译指令的位置。这个过程是递归进行的,也就是说被包含的头⽂件也可能包含其他⽂件。•删除所有的注释(这就说明编译器根本不管我们的注释,注释是为了我们使用者更加方便理解)•添加⾏号和⽂件名标识,⽅便后续编译器⽣成调试信息等。•。原创 2024-03-30 10:39:25 · 779 阅读 · 1 评论 -
C语言----简单文件处理
也就是说后缀是.c或者.obj,.exe的是程序文件。数据文件就是一堆数据。这个通俗易懂吧。好了,当我们知道什么是文件后,那么我们文件内容其实也是区分了的。比如我们都知道在C语言中存储中不改变什么的话,就是存储的二进制,因为0/1嘛最简单。但是不能只有1二进制啊。肯定还要有其他的。那么这个时候我们以前也学过的ascll码值就跳出来了。我们知道二进制无聊如何存储都只能是数字无法存储字符或者其他的但ascll码值就不一样了。可以存储字符和其他的特殊符号。所以我们可以根据数据的组织形式,数。原创 2024-03-28 09:15:00 · 652 阅读 · 3 评论 -
c语言函数详解
在C语言中,函数是指一组执行特定任务的语句,这些语句可以重复使用,并且可以在程序的不同部分调用。通过使用函数,程序员可以将程序分解成小而独立的部分,从而使代码更加清晰、易于维护和修改。原创 2024-01-26 17:14:23 · 1012 阅读 · 3 评论 -
C语言----斐波那契数列(附源代码)
各位看官们好,当我写了上一篇博客杨辉三角后,有一些看官叫我讲一下斐波那契数列。对于这个大家应该是有了解的。最简单的规律就是f(n)=f(n-2)+f(n-1)。就是当前是前两项之和,然后下标1和0都是1.从第三项开始计算的。那么我们知道规律,那么我们就直接来讲讲如何实现和实现方法有哪些吧。原创 2024-05-11 21:19:01 · 955 阅读 · 3 评论 -
C语言----联合体
不知道大家是否听说过联合体这个名词。但其实大家不用觉得联合体有多特殊,大家可以想象结构体是一栋楼,里面有很多房间,住了形形色色的住户(不用或者相同的数据)。但联合体只有一个房间,所有的住户都挤在这个房间里面。但是这个房间的大小是以最大数据类型来决定的。比如说我们创建了一个联合体,里面放置了int类型和char类型。那么这个联合体大小计算int类型的大小了。原创 2024-02-28 13:08:04 · 1216 阅读 · 3 评论 -
C语言----贪吃蛇(补充)
各位看官好,我想大家应该已经看过鄙人的上一篇博客贪吃蛇了吧。鄙人在上一篇博客中只是着重的写了贪吃蛇的实现代码,但是前期的一些知识还没有具体的介绍,比如确认光标位置,句柄等。那么我这一篇博客就来补充上一篇博客所留下来的坑吧。原创 2024-05-02 14:00:08 · 934 阅读 · 2 评论 -
C语言----动态内存
学到这里了,大家应该对C语言的了解跟深一层了吧。我们C语言写代码不能只局限于直接写代码。我们要了解C语言的内存分布,我们都知道C语言的内存是有堆区,栈区,静态区的。然后栈区是我们平常创建临时变量存储的地方,静态区是我们全局变量,和静态变量。堆区就是动态内存了,并且我们今天讲的就是关于堆区的相关知识大家看一张图片可能会更加了解一些。原创 2024-03-23 09:30:00 · 1763 阅读 · 3 评论 -
c语言---数据在内存中的存储
看过上面的讲解大家应该知道大小端的区别,和如何区分大小端以及如何使用代码来判断自己的系统是大端还是小端存储了吧。那么我们接下里就将一个特殊有点的,浮点数的存储。至于是那些地方特殊嘞,我们来看看下面代码的运行结果(当然浮点数我们在前面的内容是讲过的不只用float还有double、long double)原创 2024-02-21 21:57:11 · 1203 阅读 · 2 评论 -
C语言————结构体
接下来我们来了解C语言中很重要的内容:结构体。虽然到现在我们可以创建常量,变量,数组,但是存储的都是相同类型的数据,如果我们需要写入不同数据类型的信息怎么办,例如常见的身份证上的信息,有身份证号,有地址,有名字,有照片。又比如一个学生的学习,有学号,姓名,年龄,等等。这样的话,如果我们还是以前那样一个数据创建一个的话,岂不是很麻烦,当我们需要将不同数据类型存储在一起的时候这就引出了 结构体。这样大家大概知道结构体是什么样子了吧。原创 2024-02-24 22:07:12 · 972 阅读 · 2 评论 -
C语言----内存函数
当我们学习了字符函数,那内存函数的我们肯定也是要了解的吧。但我们需要了解的是内存函数可在任意类型使用,字符串函数只能比较字符串,内存函数不关注’\0’, 只关注要拷贝的字节数。这是内存函数与字符串函数最明显的一个区别。那么内存函数大概有哪些嘞。我们可以先看一下memcpy(复制),memmove(复制),memset(设置内容),memcmp(比较)。这是鄙人现在知道的常见的内存函数。也许还有很多的函数,鄙人不知道。当然也希望大家可以在下方评论区留言。原创 2024-03-15 09:15:00 · 1832 阅读 · 4 评论