
C语言基础
文章平均质量分 88
Brant_zero2022
及时当勉励
展开
-
【extern “C“】C++调用C语言静态库 (图片 + 步骤详解)
C语言生成的静态库可以在C++的编译下运行,而C++生成的静态库同样可以在C语言的编译下运行,是如何做到这种效果呢?让我们一起来学习一下吧~原创 2022-07-17 21:10:17 · 3111 阅读 · 2 评论 -
八大排序算法—源代码(c语言)
插入排序 希尔排序 选择排序 堆排序 冒泡排序 快速排序 归并排序 计数排序八大排序算法,插入排序 希尔排序 选择排序 堆排序 冒泡排序 快速排序 归并排序 计数排序八大排序算法,插入排序 希尔排序 选择排序 堆排序 冒泡排序 快速排序 归并排序 计数排序八大排序算法,插入排序 希尔排序 选择排序 堆排序 冒泡排序 快速排序 归并排序 计数排序八大排序算法,插入排序 希尔排序 选择排序 堆排序 冒泡排序 快速排序 归并排序 计数排序八大排序算法的C语言实现。...原创 2022-07-15 21:33:55 · 3508 阅读 · 1 评论 -
冒泡排序、选择排序、计数排序(C语言实现)
快来学会这三个简单的排序,代码量少,实现简单,有突发想处理小段数据时再合适不过了,特别适合新手学习的三个简单排序算法,你确定不来看看吗~原创 2022-07-14 16:29:47 · 1410 阅读 · 3 评论 -
快速排序(快排) (C语言实现)
本篇博客学习内容是快速排序,快速排序有多种不同的版本和优化,我们这次的目的就是将这些版本都搞明白,废话不多说,我们开始。原创 2022-07-11 22:06:46 · 46724 阅读 · 13 评论 -
插入排序、希尔排序—动图演示+代码展示【C语言】
在上篇文章中我们实现了堆排序(堆排序与Top-K),是一种效率非常高的排序,接下来我们来学习另外两种排序,插入排序和希尔排序 。原创 2022-07-08 19:54:52 · 687 阅读 · 0 评论 -
【数据结构】堆排序与Top-K问题
在上篇文章了解了堆的基本功能后,我们便可以使用堆来实现其独特的功能——堆排序与Top-K问题,我们一起来往下学习。原创 2022-07-07 19:31:09 · 754 阅读 · 0 评论 -
【数据结构】堆的基本操作
本篇博客主要来介绍堆的基本结构和操作,其中重要的点在于堆的向上调整和向下调整的实现,这两个函数的实现是堆这个数据结构最核心的地方,也是后面我们实现堆排序和TOP-K问题的关键。原创 2022-07-06 22:05:31 · 1252 阅读 · 0 评论 -
二叉树的基本概念和性质
树是一种非线性的数据结构,他是由n(n>=0)个有限结点组成的一个具有层次关系的集合。叫做树是因为其结构像一颗倒挂的树,即根朝上,而叶朝下。有一个特殊的节点,称为根节点,根结点没有前驱结点。除了根节点,其余结点被分成M(M>0)个互不相交的集合T1、T2……Tn,其中每一个集合Ti(1 ......原创 2022-07-04 22:12:33 · 661 阅读 · 0 评论 -
链式二叉树的基本操作(C语言实现)
本篇博客学习的是最普通的链式二叉树,这个结构在实际应用的中的作用并不是很大,但是我们仍要学习这个结构。学习这个结构的目的是为了以后我们研究更复杂的树型结构打下基础。废话不多说,直接开始。...原创 2022-07-05 11:40:08 · 1910 阅读 · 0 评论 -
leetcode622.设计循环队列(C语言)
实现一个循环的队列,其特性队列的先进先出(FIFO)原则,队尾被连接在队首之后以形成一个循环,该题目即为实现其功能。①创建一个大小为k+1的数组。使用head和tail两个变量来记录数组中数据的变化;②存入数据时,tail指针向后移动;删除数据时,head指针向前移动。③因为要存放k个数据,我们开辟k+1的空间的目的就是防止存入数据时发生了覆盖,当tail+1==head时即表示队列存满。...原创 2022-06-30 17:40:18 · 842 阅读 · 0 评论 -
用栈实现队列、用队列实现栈(C语言_leetcode_232+225)
前两天实现了栈和队列,现在做两道经典的例题来巩固所学的知识。题目链接:232. 用栈实现队列 - 力扣(LeetCode)225. 用队列实现栈 - 力扣(LeetCode)原创 2022-06-29 12:00:35 · 544 阅读 · 0 评论 -
队列的基本操作(C语言实现)
本篇博客带来栈的好兄弟——队列。 接下来我们来看看此次要实现的队列基本操作。原创 2022-06-28 13:04:20 · 6610 阅读 · 0 评论 -
栈的基本操作(C语言实现)
期末终于结束,接下来就会继续更新数据结构相关的内容了,本篇文章带来数据结构——栈,来实现它的基本功能。难度偏低,因为之前我们已经实现过顺序表了,栈不过是顺序表的一种特殊形式。接下来我们来看看我们栈的类型定义以及我们此次要实现的功能。...原创 2022-06-27 18:29:22 · 11641 阅读 · 0 评论 -
带头双向循环链表的基本实现(C语言实现)
在上篇链表的介绍里已经说过了,带头双向循环链表也是一种十分常见的结构,这种结构比简单的单链表复杂一些,但是功能性更强,且在实际运用中更加常见。接下来我们就来实现一下它的基本功能,并且看一下这种结构相较于单链表有什么优势。先来看看此次带头双向循环链表我们实现的具体功能以及结构体变量的定义。一、头文件#include <stdio.h>#include <stdlib.h>#include <assert.h>#include <stdbool.h&原创 2022-05-30 10:00:00 · 500 阅读 · 2 评论 -
【C语言】自定义类型——结构体(1)
本篇文章我们来学习一下啊C语言中一个重要的知识点——结构体,如果想学好C语言那学好结构体必然是前提,废话不多说,我们直接进入正题。一、结构体的声明和初始化1.1 结构体是什么结构体是一些值的集合,这些值被称为结构体成员变量。结构体中每个成员可以是不同的类型。比如我们可以在一个结构体中定义整形、浮点数、指针、数组等等,如果我们需要使用它们,则可以直接通过操作符来访问这些结构体变量。1.2 结构体的声明struct stu{ char name[20]; ...原创 2022-04-02 18:06:30 · 2737 阅读 · 2 评论 -
分分钟带你了解字符串、内存函数【C语言】
本篇文章介绍一些字符串函数和内存函数,主要会讲解他们的使用和模拟,希望对大家有所帮助。字符串函数strlenstrcpystrcmp原创 2022-04-01 16:58:08 · 1456 阅读 · 1 评论 -
【C语言】qsort函数的使用和模拟实现
本篇文章我们来了解一下回调函数以及C语言中qsort函数的使用方法。C语言中qosrt函数的使用...原创 2022-03-23 21:00:13 · 3111 阅读 · 4 评论 -
【C语言】你真的了解指针吗?(2)
这是指针的第二篇文章,这篇文章我将会讲解一下函数指针和函数指针数组以及它们的具体使用。目录一、函数指针二、函数指针数组函数指针数组的定义以及初始化函数指针数组的使用三、转移表一、函数指针函数指针,顾名思义就是指向函数的指针,接下来我们来看看函数指针使用void print(){ printf ("hello\n");}int main (){ void (*p)()=print; (*p)(); return 0;}...原创 2022-03-19 23:50:38 · 998 阅读 · 0 评论 -
【C语言】你真的懂指针吗? (1)
你真的了解指针吗,在C语言中指针具有非常大的作用,所以这篇文章将会带你深层次的了解指针,首先,指针的分类。一、字符指针二、数组指针三、指针数组四、数组传参和指针传参一、字符指针。在指针类型中,有一种指向字符型的字符指针:char*int main (){ const char* p="hello,world"; printf ("%s",p); return 0;}这段代码中,p指针指向了hello,world这串字符串。接下来我们来分析下这段代码原创 2022-03-19 18:23:49 · 1230 阅读 · 0 评论 -
【C语言】数据在内存中的存储
目录1.各种数据类型2.整形数据是如何存储的2.1原码、反码、补码3.浮点型数据是如何存储的3.1浮点型数据的存储规定3.2浮点型数据在内存中的存储3.3浮点型数据的取出4.大小端存储4.1什么是大小端存储:4.2为什么会有大小端模式之分呢?4.3检测当前编译器是存储方式1.各种数据类型我们在以往的学习中已经学过许多种内置类型:char、short、int、long、longlong、float、double……然而在C语言中还有许多基本的数据类型原创 2022-03-02 20:23:07 · 995 阅读 · 1 评论 -
【C语言初学】使用assert、const提高代码质量
大家好,我们Brant_zero,很久没更新了。今天给大家带来一篇C语言初级提高代码质量的文章,大家看完觉得不错可以点个赞,求求。1.正确使用assertassert是什么呢,这里肯定有一些人产生了疑问,这里我们拿出MSDN中的介绍来看看这里发现,assert是用来判断结果是否为假的,是假的就将错误信息打印出来。这就很方便我们在写代码的时候判断一些语句的真假了,避免一些我们不希望产生的结果,并且告知我们错误。那这里我们来举一个strcpy函数的例子:我原创 2022-02-28 17:33:08 · 597 阅读 · 1 评论 -
【扫雷游戏】C语言版——老妈子版讲解
大家好,即三子棋后一款游戏——扫雷,这个游戏就比三子棋可玩性高很多了,相对应的有个算法会比较难想到,但是跟三子棋的游戏框架很像。废话少说,接下来我们就开始分析扫雷如何实现吧。目录一、棋盘的初始化二、棋盘的打印三、存放地雷。四、查找雷递归展开五、鉴定排雷状况,结束排雷事先准备和用户交互画面和三子棋是相同的,我就不复制粘贴了,可以去看我的上一篇博客,这里直接说这两步之后的程序。一、棋盘的初始化我们这里用使用两个棋盘,一个是我们安放地雷的棋盘,一个是用户用来排雷的棋盘,这样原创 2022-01-24 21:11:30 · 2415 阅读 · 1 评论 -
【三子棋】C语言版——妈咪级讲解
大家好,今天为大家带来三子棋C语言版讲解,这个游戏看着简单,但是对于我这种新手实现起来还是有一定难度的,废话少说,直接开冲。目录一、事先准备二、用户交互画面三、三子棋棋盘的初始化和打印四、玩家输入和电脑输入玩家移动电脑移动五、判断输赢和平局六、头文件和game函数一、事先准备我们要创建一个头文件和两个源文件头文件game.h放游戏相关函数的声明源文件test.c实现主函数,大致的框架源文件game.c实现游戏相关函数这样做的好处是将各复杂函数间模块原创 2022-01-23 13:42:08 · 3057 阅读 · 4 评论 -
【二分查找】详细讲解(C语言折半查找)
二分查找的具体实现,图解二分查找流程。原创 2022-01-21 11:05:20 · 3903 阅读 · 4 评论 -
【汉诺塔】C语言递归解法,深层次地带你理解汉诺塔公式
目录汉诺塔公式汉诺塔问题在数学层面的公式:C语言递归公式两层汉诺塔三层汉诺塔递归问题可谓是学习C语言以来的第一个拦路虎,而汉诺塔问题更是递归中对新手很不友好的一道经典题,我们接下来从公式角度和更深层的图解角度来让你理解汉诺塔问题。汉诺塔公式汉诺塔问题在数学层面的公式:不用说,你看到这个公式一定一脸懵逼,我现在来讲解这个公式的作用。先来回想一下大象放冰箱要几步,三步吧,打开冰箱,放进去,关上门就行了,我们先不要去思考一些细碎的步骤,将一个复杂的问题先简单化,原创 2022-01-19 16:30:00 · 3993 阅读 · 8 评论 -
srand、rand、time函数的正确使用(猜数字游戏)
这篇文章我简要介绍srand、rand、time函数的使用,并用他们一起来完成一个猜数字游戏目录一、随机数产生函数1、rand函数,2、srand函数,3、time函数,二、猜数字游戏1.游戏菜单:2.游戏进入、退出程序3、完成游戏运行本体(game函数的实现)一、随机数产生函数1、rand函数,他就是我们今天用来生成随机数的重要嘉宾,这个函数接受一个种子,就可以根据这个种子产生一系列用算法实现的随机数; 2、srand函数,...原创 2022-01-18 17:08:02 · 4497 阅读 · 2 评论 -
分支语句、循环语句难盲点
这篇博客主要是用来梳理本人在学习分支循环语句中的盲点目录1.用while实现scanf多组输入2.scanf 、getchar与缓冲区和键盘3.rand.srand.time函数功能梳理(可使用于猜数字游戏)1.rand函数2.srand函数3.time函数4.rand函数和srand函数的调用推测1.用while实现scanf多组输入我们可以通过while(scanf("%d",&num)!=0))或while (scnaf ("%d",&..原创 2022-01-16 20:26:18 · 461 阅读 · 2 评论 -
初识C语言——C语言基础知识(3)
大家好,我是Brant_zero接下来为大家带来剩下4部分的C语言基础认识,这剩下的4个部分难度比较大了,大家做个基本了解就行,不必太纠结这其中的概念常见关键字关键字typedef关键字static关键字define关键字typedeftypedef 顾名思义就是类型定义,这里应该理解类型重定义比如定义unsigned int (无符号整形)重命名为 u_n,则u_n就也代表无符号整形的意思了typedef unsigned int u_n;原创 2022-01-15 23:01:20 · 713 阅读 · 1 评论 -
初识C语言——C语言基础知识(2)
介绍C语言的基本知识,字符串、转义字符、选择语句、循环语句、函数、数组、、操作符……原创 2022-01-14 18:28:31 · 458 阅读 · 1 评论 -
初识C语言——C语言基础知识
大家好,我是Brant_以下是我学习C语言的一些过程,我会在此日常更新一些博客来记录我的C语言学习之路,一起共同进步,一起从初阶段开始学习C语言;一、什么是C语言C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易 的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语 言。 尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的 C语言程序可在许多电脑平台上进行编译,甚至包含一原创 2022-01-13 20:57:19 · 6690 阅读 · 0 评论 -
【C语言】预处理指令
本篇博客就算是C语言的最后一博客了,本篇介绍的是C语言中的预处理指令,希望通过本章的学习能让大家掌握预处理指令,在C语言中,预处理指令是非常常见的,接下来我们就来了解一下预处理指令。一、预定义符号__FILE__ //进行编译的源文件 __LINE__ //文件当前的行号 __DATE__ //文件被编译的日期 __TIME__ //文件被编译的时间 __func__ //当前函数的函数名 __STDC__ //如果编译...原创 2022-05-02 23:07:43 · 247 阅读 · 0 评论 -
【C语言】通讯录——源代码
C语言版通讯录的实现——源代码展示原创 2022-04-25 00:11:26 · 2725 阅读 · 0 评论 -
【C语言】通讯录
在我们学习了指针、结构体、动态内存管理、文件操作,这里我们可以做一个小项目来巩固所学的知识点——通讯录。框架的实现为了实现这个通讯录,首先我们要创建一个结构体变量用来存放联系人的信息。这时我们思考,我们创建的这个通讯录不可能只存放一个人的信息,所以我们要使用结构体数组来存放多个人的数据,数组中每一个元素就是一个人的信息,即一个结构体变量。与此同时,我们还需要知道当前通讯录存放了多少了人的信息,即(sz)——存放信息的大小。这时我们可以再创建一个结构体变量将结构体数据和结构体大小.原创 2022-04-25 00:00:42 · 2128 阅读 · 0 评论 -
【C语言】10分钟学会文件操作
为什么使用文件,我们每当运行C语言程序运行时,我们可以在程序中进行一系列操作,但是每当我们退出程序时,保存在内存中的数据就自动销毁了,这就会导致下次程序运行我们又要重新录入。这时我们可以使用文件操作将数据存放在硬盘上,在我们下次运行程序时,将硬盘上的文件拷贝到内存中,便可以保存、使用上次的数据,这就做到了数据的持久化。接下来我们就来了解一下文件的相关操作。一、文件的分类在程序设计中,我们通常讨论的文件有两种文件:1.程序文件 2.数据文件。1.1程序文件包括源程序文件(后缀为.c),目原创 2022-04-20 14:09:13 · 1274 阅读 · 1 评论 -
【C语言】常见的动态内存错误
在上篇文章中我们了解了内存操作函数,不难发现使用内存操作函数中很容易发生错误,所以本篇博客我们就来看看C语言中使用动态内存函数中经常出现的错误,从而在以后写代码过程中避免出现这些错误。一、常见的动态内存错误1.1对NULL指针进行解引用操作void test(){ int*p=(int*)malloc(INT_MAX/4); *p=20; free(p);}这道题目中,我们没有对malloc开辟的空间进行判定为空,如果maloc返回的是NULL指针,则对NULL原创 2022-04-15 17:00:49 · 1306 阅读 · 0 评论 -
【C语言】动态内存管理
在C语言中指针、结构体、动态内存管理都是十分重要的,这三部分直接影响到了后面数据结构的学习,所以我们要努力将指针、结构体、动态内存管理这三部分掌握好。原创 2022-04-14 20:13:17 · 1779 阅读 · 1 评论