自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 C++常见概念

引用是给**已存在的变量**取一个别名,编译器不会为引用变量开辟内存空间, 它和它引用的变量共用同一块内存空间。类型 & 引用别名=引用对象;int& b = a;int& c = b;//c也相当于是a的引用c++;//a,b,c的值相同//a,b,c的地址相同return 0;

2025-03-06 18:59:57 911

原创 数据结构:栈和队列

只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表。栈中的数据元素遵守后进先出 LIFO(Last In First Out)的原则。思路:遍历字符串,遇到左括号入栈,遇到右括号则与栈顶元素比较,是否匹配。:栈的插入操作称为进栈/压栈/入栈,入数据在栈顶。每个右括号都有一个对应的相同类型的左括号。实现,相对而言以数组的结构实现更优一些。实现,相对而言以链表的结构实现更优一些。:栈的删除操作称为出栈,出数据在栈顶。:进行删除操作的一端称为队头。:一种特殊的线性表,其。的存储结构,而队列的。

2025-03-03 18:45:25 746

原创 顺序表和链表

注意:上述代码的尾插部分由于对新链表分空与非空的情况而非常冗余,因此可以在创建的新链表的头结点添加一个“哨兵位”来简化代码。线性表是一种在实际中广泛使用的数据结构。链表是一种**物理结构上非连续、非顺序**的存储结构,数据元素的**逻辑顺序是通过链表中的指针链接次序实现**的。因此一个指针从链表起始位置运行,一个指针从相遇点位置绕环,每次都走一步,两个指针最终会在环的入口点的位置相遇。思路 3:找链表的中间结点,以链表的中间结点为新链表的头结点反转链表,将新链表与原链表比较。快指针的路程是慢指针的两倍。

2025-02-06 16:20:06 1097

原创 算法的复杂度

数据结构(DataStructure)是**计算机存储、组织数据(增、删、查、改)的方式**,指**相互之间存在一种或多种特定关系的数据元素的集合**。没有一种单一的数据结构对所有用途都有用,所以我们要学各式各样的数据结构。

2024-12-23 11:01:38 947

原创 预处理详解

C 语言设置了一些预定义符号,可以直接使用。预定义符号也是在预处理期间处理的。__FILE__ //进行编译的源文件__LINE__ //文件当前的行号__DATE__ //文件被编译的日期__TIME__ //文件被编译的时间(而非运行的时间)__STDC__ //如果编译器遵循ANSIC,其值为 1,否则未定义int main()printf("源文件为:%s\n", __FILE__);printf("行号为:%d\n", __LINE__);

2024-12-22 16:44:07 1147

原创 编译和链接

由汇编器将汇编代码转转变成机器可执行的指令(二进制的指令),每一个汇编语句几乎都对应一条机器指令。就是根据汇编指令和机器指令的对照表一一的进行翻译,也不做指令优化。将源代码程序输入扫描器,扫描器的任务就是简单的进行词法分析,把代码中的字符分割成一系列的记号(关键字、标识符、字面量、特殊字符等)。链接解决的是一个项目中多文件、多模块之间互相调用的问题。链接是一个复杂的过程,链接的时候需要把一堆文件链接在一起生成可执行程序。在链接阶段会发生符号表的合并。在 ANSI C 的任何一种实现中,存在两个不同的环境。

2024-12-22 16:40:22 1078

原创 文件操作

磁盘上的文件是文件。程序文件、数据文件(从文件功能的角度来分类)。此前我们处理数据的输入输出都是以终端为对象的,即从终端的键盘输入数据,运行结果显示到显示器上。如果我们要把信息输入到磁盘上,当需要时再从磁盘上把数据读取到内存中使用,我们处理的就是磁盘上的文件。

2024-12-20 17:17:52 1016 1

原创 动态内存管理

栈区(stack):在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时 这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。栈区主要存放运行函数而分配的局部变量、函数参数、返回数据、返回地址等。堆区(heap):一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。分配方式类似于链表。数据段(静态区)(static)存放全局变量、静态数据。程序结束后由系统释放。

2024-12-18 16:59:52 1133

原创 枚举

在 C 语言中可以,但是在 C++ 中不行,C++ 的类型检查比较严格。枚举,顾名思义就是一一列举。把可能的取值一一列举。一周的星期⼀到星期日是有限的7天,可以一一列举。性别有:男、女、保密,也可以一一列举。中的内容是枚举类型的可能取值,也叫。月份有12个月,也可以一一列举。这些可能取值都是有值的,默认从。定义常量,为什么需要使用枚举?,当然在声明枚举类型的时候也。三原色,也是可以一一列举。

2024-12-17 16:24:54 290

原创 联合体

比如,我们要搞一个活动,要上线一个礼品兑换单,礼品兑换单中有三种商品:图书、杯子、衬衫。当最大成员大小不是最大对齐数的整数倍的时候,就要对齐到最大对齐数的整数倍。若直接设计上述结构,设计的很简单,用起来也方便,但是结构的设计中。因为对于礼品兑换单中的商品来说,只有部分属性信息是常用的。每一种商品都有:库存量、价格、商品类型和商品类型相关的。写⼀个程序,判断当前机器是大端?联合的大小至少是最大成员的大小。衬衫:设计、可选颜色、可选尺寸。像结构体一样,联合体也是由。所以联合体也叫:共用体。

2024-12-17 16:24:03 439

原创 结构体

/变量的定义struct aint x;int y;}p1;//定义结构体变量//初始化//按成员变量的顺序初始化//按照指定的顺序初始化//初始化为0//结构体嵌套初始化struct bint m;char n[10];//结构体成员的输入与输出int main()return 0;结构体的第一个成员对齐到和结构体变量起始位置偏移量为0的地址处其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处。对齐数 = 编译器默认的一个对齐数与该成员变量大小的。

2024-12-17 08:20:49 1239 1

原创 qsort函数与冒泡排序

冒泡排序等排序方式只能针对整型,且并非所有的数据都能用。是一个库函数,用于对数据的排序。对所有数据类型都能进行排序。

2024-11-21 18:45:28 331

原创 内存函数

memcpy。

2024-11-20 11:30:58 549

原创 字符函数和字符串函数

字符分类函数C语言中有⼀系列的函数是专门做字符分类的,也就是⼀个字符是属于什么类型的字符的。ctype.h这些函数的用法非常类似。是能够判断参数部分是否是小写字母的。通过返回值来说明是否是小写字母,如果是小写字母就返回非0的整数,如果不是小写字母,则返回0写⼀个代码将字符串中的小写字母转大写,其他字符不变。字符转换函数C语⾔提供了2个字符转换函数,头文件为ctype.h上面的代码,我们将小写转大写,是-32完成的效果,有了转换函数,就可以直接使用转换函数。

2024-11-19 15:05:54 1850 3

原创 指针、数组与函数

把函数的地址存到⼀个数组中,那这个数组就叫函数指针数组。那函数指针的数组如何定义呢?parr1。parr1先和[]结合,说明parr1是数组,数组的内容是什么呢?是int (*)()类型的函数指针。

2024-11-17 16:03:01 1454 1

原创 指针

我们知道计算上CPU(中央处理器)在处理数据的时候,需要的数据是在内存中读取的,处理后的数据也会放回内存中,那我们电脑上的哪些内存空间如何高效的管理呢?指针变量的大小和类型无关,只要是指针变量,在同一个平台下,大小都是一样的,为什么还要有各种各样的指针类型呢?,那么一根线,就能表示2种含义,2根线就能表示4种含义,依次类推。C语言中,我们只要拿到了地址(指针),就可以通过地址(指针)找到地址(指针)指向的对象。同理,64位机器,假设有64根地址线,一个地址就是64个二进制位组成的二进制序列,

2024-11-17 15:59:34 948

原创 操作符详解

操作符也被叫做:运算符。2.2 `*``*` 用来完成乘法。2.3 `/``/` 用来完成除法。除号的两端如果是整数,执行的是整数除法,得到的也是整数。C语言中 执行的整数除法是整除,只会返回整数部分,丢弃小数部分。如果想要得到浮点型的结果,两个运算数至少有一个浮点数,此时C语言会进行浮点数除法。 打印浮点数默认保留6位小数。直接在代码中写浮点数,默认为 类型。 此处的6.0为 类型。负数求模的规则是:结果的正负号由第一个运算符的正负号决定。在上述示例中, 都是由有两个操作数的,位

2024-11-01 16:16:14 1280

原创 表达式求值

整型提升C语言中整型算术运算总是**至少以**`**int**`**整型类型的精度**来进行的。为了获得这个精度,表达式中的字符和短整型操作数在使用之前被转换为普通整型,这种转换称为整型提升。整型提升的意义:表达式的整型运算要在CPU的相应运算器件内执行,CPU内整型运算器(ALU)的操作数的字节长度一般就是**int**的字节长度,同时也是CPU的通用寄存器的长度。因此,即使两个char类型的相加,在CPU执行时实际上也要先转换为CPU内整型操作数的标准长度。通用CPU(general-pu

2024-11-01 16:09:16 572 2

原创 二进制详解

10进制10进制中满10进1​10进制的数字每一位都是0~9的数字组成​2进制2进制中满2进1​2进制的数字每一位都是0~1的数字组成​8进制8进制中满8进18进制的数字每一位都是0~7的数字组成8进制前需要加上016进制16进制中满16进110进制的数字每一位都是09,af(A~F)的数字组成16进制前需要加上0x。

2024-10-29 14:12:56 1261

原创 函数递归

这里我们看到了,在计算第40个斐波那契数的时候,使用递归方式,第3个斐波那契数就被重复计算了39088169次,这些计算是非常冗余的。所以如果采用函数递归的方式完成代码,**递归层次太深,就会浪费太多的栈帧空间,也可能引起栈溢出(stack overflow)**的问题。当我们n输入为50的时候,需要很长时间才能算出结果,这个计算所花费的时间,是我们很难接受的,这也说明递归的写法是非常低效的。其实递归程序会不断的展开,在展开的过程中,我们很容易就能发现,在递归的过程中。

2024-10-26 11:54:36 1434

原创 C语言小游戏3——扫雷

此处有多种办法解决,比如:雷和非雷的信息不要使用数字,使用某些字符就行,这样就避免冲突了,但是这样做棋盘上有雷和非雷的信息,还有排查出的雷的个数信息,就比较混杂,不够方便。**解决方案:**为了防止越界,我们在设计的时候,给数组扩大一圈,雷还是布置在中间的。**问题二:**在排查的坐标位于边界处时,周围的部分坐标可能存在越界。**问题一:**我们在棋盘上布置了雷,棋盘上雷的信息。的棋盘上布置雷的信息和排查雷,我们首先想到的就是。,并打印出来,作为排雷的重要参考信息的。扫雷的过程中,布置的雷和排查出的雷的。

2024-10-26 10:06:27 563

原创 C语言小游戏2——猜数字游戏

这个随机数的范围是在0~RAND_MAX之间,这个RAND_MAX的大小是依赖编译器上实现的,但是大部分编译器上是32767。,其实返回的是1970年1月1日0时0分0秒到现在程序运行时间之间的差值,单位是。其实rand函数生成的随机数是伪随机的,伪随机数不是真正的随机数,是。之所以前面每次运行程序产生的随机数序列是一样的,那是因为rand函数。在程序中我们一般是使用时间作为种子的,因为时间时刻在发生变化的。,只要种子在变化,每次生成的随机数序列也就变化起来了。C语言中又提供了一个函数叫。

2024-10-23 18:03:23 484 1

原创 函数

了解了库函数,我们的关注度应该聚焦在自定义函数上,自定义函数其实更加重要,也能给程序员写代码更多的创造性。一般我们在使用函数的时候,直接将函数写出来就使用了。比如:我们要写一个函数判断一年是否是闰年。//函数的定义return 1;return 0;int main()//函数的调用printf("是闰年");elseprintf("非闰年");return 0;上面代码中橙色的部分是函数的定义,绿色的部分是函数的调用。这种场景下是函数的定义在函数调用之前,没啥问题。

2024-10-23 17:58:35 1084

原创 数组

数组的概念一维数组的创建和初始化一维数组的使用一维数组在内存中的存储sizeof计算数组元素个数​二维数组的创建二维数组的初始化二维数组的使用二维数组在内存中的存储C99中的变长数组​数组练习​。

2024-10-19 15:26:04 1316

原创 分支和循环

的。

2024-10-16 14:48:22 966 2

原创 scanf 和 printf函数

scanf和printf都是系统自带的函数,在头文件stdio.h中定义的。我们要使用printf和scanf,就必须先让编译器理解它们。用#include命令,我们就可以调用文件stdio.h的函数scanf和printf。stdio.h名为标准输入输出文件,源于standard input & output。而.h为头文件的后缀。

2024-10-12 16:47:39 1339 1

原创 C语言数据类型和变量

C语言提供了丰富的数据类型来描述生活中的各种数据。所谓“类型”,就是相似的数据所拥有的共同特征编译器只有知道了数据的类型,才能知道怎么对数据进行处理。💡[]中的内容可以省略。

2024-10-12 16:42:48 1224 1

原创 C语言常见概念

在了解C语言之前,我们应该先介绍一下什么是编程语言。编程语言,简单的来说,就是用于人与计算机交流的语言。正如人与人之间可以通过汉语,英文交流一般,人想要给计算机下达指令,也需要特点的语言,即编程语言。编程语言多种多样,除了我们要介绍的C语言,还有C++,Java,Python,Golong等多种语言。

2024-10-08 23:26:54 1011 2

原创 C语言小游戏1——关机程序

一个非常“有意思的小游戏,大家可以写完给朋友们试一试。今天给大家分享一个简单的C语言小游戏。

2024-09-23 21:09:43 393

原创 visual studio 2022的环境搭配与使用

上文我们曾提到了多种C语言编译器,笔者心中最适合初学者的选择为 visual studio 2022。本文我们将来分享一下 visual studio 2022开发环境的搭建。

2024-09-21 16:38:12 1950

原创 初识C语言

或许对于多数人而言,C语言是他们走进编程世界的起点,笔者也不例外。然而,无论是大学中的教授,亦或是网络上的各种优质免费课程,都鲜少能将C语言成体系、结构化的讲解清楚,并能够比较全面的提出学习者可能所遇的问题。笔者作为一个学习者,也经历过为零碎的知识点所困惑的烦恼,经历过面临突然出现却又不知如何解决的问题的焦躁。因此,笔者创作此系列文章,分享笔者学习过程中所学的知识,曾经面临的困惑与思考,希望能对屏幕前的你能有所帮助。

2024-09-21 00:41:05 1346 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除