- 博客(33)
- 收藏
- 关注
原创 Linux基础开发工具 编译器gcc/g++
gcc是Linux中最常用的c编译器,只能用来编译c语言。g++支持多语言编译,跨平台开发,是基础开发必备工具。今天我们来谈一下gcc编译程序(程序的编译过程) 翻译语言的本质是:转化成cpu能够识别的指令集。
2025-11-23 16:52:52
521
8
原创 Linux 基础开发工具----Vim编辑器的常见命令
答:在Linux下安装软件,一个通常的方法是下载到程序的源代码,并进行编译,得到可执行程序。但是这样比较麻烦,于是有一些人把一些常用的软件提前编译好,做成软件包(也可以理解成windows上的安装程序)放在一个服务器上,通过包管理器可以很方便的获取到这个编译好的软件包,直接进行安装。软件包和软件包管理器的关系类似于:软件 和 应用商店 的关系。在centos上是yum(yellow dog Updater),在ubuntu上是apt(Advanced Package Tool)。
2025-11-11 16:45:12
511
原创 C++ --- 模版初阶
/类模板的定义public:_size = 0;//声明入栈函数private:T* _array;//模板不建议声明和定义分离到俩个文件.h和.cpp会出现链接错误//模板成员函数的实现//模板函数如果在类外实现,需要重复写template<class T>声明//并且通过Stack<T>::指明是属于Stack模板类的成员函数。//扩容++_size;int main()//模板类的使用(实例化)//int。
2025-10-15 17:17:22
492
6
原创 C++内存管理
private:public:// 重写 what() 方法,返回异常描述// 抛出自定义异常的函数throw MyException("这是一个自定义异常");std::cout << "捕获到自定义异常:" << e.what() << std::endl;// 捕获其他标准异常std::cout << "标准异常:" << e.what() << std::endl;// 捕获所有类型的异常(兜底)
2025-10-14 21:11:11
904
1
原创 c++类和对象(下)
我们在之前就已经了解了构造函数,初始化成员变量主要使用的是函数体内赋值。1、其实,构造函数初始化还有一种方式,就是初始化列表,初始化列表的使用方式是以,接着是一个,每个“成员变量”后面跟一个放在括号中的初始值表达式。例如:2、每个成员变量在初始化成员列表中只能出现一次,,语法理解上初始化列表可以认为是每个成员变量定义初始化的地方。3、引用成员变量、const成员变量,没有默认构造的类类型变量,必须放在初始化列表位置进行初始化,否则编译会报错。
2025-10-12 15:48:12
722
1
原创 C++类和对象(中)详解
我们不写,编译器默认生成的构造,对内置类型成员变量的初始化没有要求,也就是说是否初始化是不确定的,看编译器。对于自定义类型的成员变量,要求调用这个成员变量的默认构造函数初始化。如果这个成员变量,没有默认构造函数,那么就会报错,我们要初始化这个成员变量,需要用初始化列表才能解决...(内置类型:就是语言提供的原生数据类型如:int/char/double/指针等,自定义类型:就是我们使用的class/struct等关键字自己定义的类型)
2025-10-08 21:26:18
555
原创 数据结构---栈和队列详解(下)
1、队列是一种先进先出(First in first out)的线性表,简称:FIFO;允许插入的一端称为队尾,允许删除的一端叫做队头。2、队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。1、栈是限定仅在表尾插入和删除操作的线性表,队列是只允许在一端进行插入操作,另一端进行删除操作的线性表。2、它们都可以用线性表的顺序存储结构来实现,但都存在着顺序存储的一些弊端,因此它们各自有各自的技巧来解决这个问题。
2025-10-03 11:37:45
565
原创 数据结构---栈和队列详解(上)
1、栈是限定仅在表尾进行插入删除操作的线性操作。(栈类似于子弹弹夹中的子弹一样,先进去的后出来,后进去的要先出来。在我们软件应用中,栈这种后进先出的数据结构是非常普。比如你用浏览器上网时,不管用什么浏览器,都有一个“后退键”,你单击后可以按访问顺序的逆序加载浏览过的网页。再一个撤销操作也是用栈这样的方式实现的。2、我们把允许插入和删除的一端称之为栈顶(top),另一端称作栈底(bottom),不含任何数据元素的栈称为空栈。栈又称为后进先出(Last in First Out)的线性表,简称:LIFO结构。
2025-10-02 12:11:55
301
2
原创 数据结构与算法之链表
如果你需要频繁插入删除,还不知道数据有多少(比如实现栈、队列、链表版哈希表),选链表,它比数组灵活;如果你需要频繁随机访问(比如想直接找第 100 个元素),选数组,因为链表只能挨个遍历,数组可以直接用下标定位(O (1));简单场景用单链表,需要前后遍历用双向链表,需要循环操作用循环链表,别 “一刀切”。最后记住:链表就像 “串串香”,节点是食材,指针是签子,串起来就能用,但吃的时候别扎到手(空指针),吃完别乱扔签子(内存泄漏),这样才能把这道 “数据结构硬菜” 吃明白!。
2025-09-09 09:11:36
883
1
原创 C++类和对象(上)
(1)class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员;类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。(2)为了区分成员变量,一般习惯上成员变量会加一个特殊标识,如成员变量前面或者后面加_或者m开头,注意C++中这个并不是强制的,只是一些惯例。(3)定义在类里面的成员函数默认为inline。2、访问限定符(1)C++一种实现封装的方式,用类和对象的属性与方法结合在一块,让对象更加完善,通过访
2025-06-07 22:45:28
1342
1
原创 C++入门基础
引⽤不是新定义⼀个变量,⽽是给已存在变量取了⼀个别名,编译器不会为引⽤变量开辟内存空间, 它和它引⽤的变量共⽤同⼀块内存空间。⽐如:⽔壶传中李逵,宋江叫"铁⽜",江湖上⼈称"⿊旋 ⻛";林冲,外号豹⼦头;类型& 引⽤别名 = 引⽤对象;int& b = a;int& c = a;//b和c是a的别名//也可以给别名b取别名,d相当于还是a的别名int& d = b;++d;//这里我们看到的地址还是一样的return 0;
2025-06-04 10:19:35
897
1
原创 Linux基础指令
要说Linux,还得从UNIX说起。(1)UNIX发展的历史•1968年,⼀些来⾃通⽤电器公司、⻉尔实验室和⿇省理⼯学院的研究⼈员开发了⼀个名叫Multics的特殊操作系统。Multics在多任务⽂件管理和⽤⼾连接中综合了许多新概念。•1969−1970年,AT&T的⻉尔实验室研究⼈员Ken Tompson和Dennis Ritchie,在采⽤很多Multics特点的基础上开发了UINX系统。它运⾏在⼩型机上,满⾜了系统对科研环境的要求。从。
2025-06-02 09:25:47
1005
1
原创 C语言---编译和链接
处理#include 预编译指令,将包含的头⽂件的内容插⼊到该预编译指令的位置。将源代码程序被输⼊扫描器,扫描器的任务就是简单的进⾏词法分析,把代码中的字符分割成⼀系列 的记号(关键字、标识符、字⾯量、特殊字符等)。编译过程就是将预处理后的⽂件进⾏⼀系列的:词法分析、语法分析、语义分析及优化,⽣成相应的 汇编代码⽂件。前⾯我们⾮常简洁的讲解了⼀个C的程序是如何编译和链接,到最终⽣成可执⾏程序的过程,其实很多。在独⽴的环境中,程序。链接是⼀个复杂的过程,链接的时候需要把⼀堆⽂件链接在⼀起才⽣成可执⾏程序。
2025-06-02 00:50:20
723
原创 c语言文件操作详解
引言:如果没有文件我们写的程序的数据是存在电脑的内存中,如果程序退出,内存回收,数据就丢失了,想使数据进行持久化的保存,我们可以使用文件。数据的组织形式,数据文件被称为文本文件或二进制文件。流:可以被想象成流淌着字符的河。c程序对文件、画面、键盘等的数据输入输出都是通过流操作来完成的。
2025-05-23 17:31:54
1143
2
原创 C语言---动态内存管理、柔性数组
(3)包含柔性数组成员的结构用malloc()函数进行内存的动态分配,并且分配的内存应该大于结构的大小,以适应柔性数组的预期大小。(ptr指向要调整的内存空间,ptr中存放的是要调整的内存空间的起始地址)释放ptr指向的空间,ptr中存放的是要释放的空间的起始地址。(2)与函数malloc的区别在于calloc会在返回地址之前把申请的空间的每个字节初始化为全0。注:(1)如果参数ptr指向的空间不是动态开辟的,那free函数的行为是为定义的。这个函数向内存申请一块连续可用的空间,并返回指向这一块的指针。
2025-05-23 09:29:39
648
原创 C语言---结构体 、联合体、枚举
(1)匿名枚举并声明变量// 匿名枚举:无枚举名,直接声明变量 statusenum {FAIL = 0,} status;printf("操作成功!\n");return 0;(2)枚举作为函数参数,类型安全检查// 定义枚举类型:方向// 函数参数为枚举类型,增强可读性case UP: printf("向上移动\n");break;case DOWN: printf("向下移动\n");break;case LEFT: printf("向左移动\n");break;
2025-05-21 11:27:53
1052
2
原创 C语言内存函数与数据在内存中的存储
只能改字节,不能改元素)0.5的二进制形式是0.1,规定有效数字部分必须为1,就是1.0*2^(-1),其阶码为-1+127=126(表示为:01111110),而尾数1.0去掉整部分后为0,补齐0到23位。(-1)^s表示符号位,s=0,V为正数,当s=1时,V为负数,M表示有效数字,M是大于等于1小于2的,2^E表示指数位。(2)E全为0,此时浮点数的指数E(真实值)=1-127/1023,有效数字M不再加上第一位的1,而是还原为0.xxxxx的小数,这是表示正负0,以及接近0的很小的数字。
2025-05-18 23:28:08
1220
1
原创 数据结构与算法----顺序表和复杂度
时间复杂度是啥?官方黑话:描述算法运行时间随数据规模增长的趋势。人话翻译:你的代码在数据量爆炸时,会“慢成狗”还是“稳如老狗”?核心思想:- 不看具体执行时间(毕竟CPU不同)- 只看增长趋势(数据量n→∞时,谁跑得更优雅)【防秃指南】1. 递归时间复杂度:用**递归树**或**主定理**分析(比如斐波那契数列O(2ⁿ)是灾难)2. 均摊时间复杂度:像顺序表动态扩容,单次插入可能是O(n),但均摊后是O(1)3. 空间换时间:哈希表用O(n)空间换O(1)查询时间---
2025-04-06 15:43:49
1265
4
原创 字符函数和字符串函数
1、iscntrl:如果它的参数符合下列条件就返回真(任何控制字符)。2、isspace:空白字符、空格、换页符(\f)、换行(\n)、回车(\r)、制表符(\t)、垂直制表符(\v)3、isdigit:十进制数字(‘0~9’字符)4、isxdigit:十六进制数字,包括所有十进制数字字符,小写字母a~f,大写字母A~F5、islower:小写字母a~z6、isupper:大写字母A~Z7、isalpha:字母a~z或A~Z8、isalnum:字母或数字,a~z,A~Z,0~9。
2025-03-30 16:56:57
738
3
原创 指针深入理解(小朋友也能学会)超详细
指针加减按类型,> 比较减法测距离。>内存街道任你跳,> 越界一秒变砖机!现在,试试用指针运算写个循环,但别把程序跳崩了哦~ 😉。
2025-03-18 17:38:50
1408
7
原创 扫雷游戏的实现
首先设计三个源文件: 1、game.h(头文件) 2、test.h(用于测试代码) 3、game.cpp(存放实现扫雷游戏的具体代码) 这样做的好处是: 1、模块划分清晰、便于修改和拓展。2、实现代码复用,可以跨项目使用 3、减少编译时间。
2025-03-16 15:48:48
473
1
原创 vs实用调试技巧
调用堆栈窗口:显示当前程序执行的函数调用层次结构,能帮助了解程序的执行路径,快速定位到问题所在的函数调用。- 监视窗口:可手动添加要监视的变量或表达式,能同时监视多个变量,便于对比和跟踪它们在程序运行过程中的变化。- 修改变量值:在调试暂停时,可以在“即时窗口”中输入代码修改变量的值,以验证不同情况下程序的运行结果。- 自动窗口:调试暂停时,会自动显示与当前代码相关的变量及其值,方便快速查看。- 快速查看变量值:调试时,将鼠标悬停在变量上,会显示变量的当前值。
2025-03-14 01:03:59
409
原创 操作符详解
a 的二进制是 0101 , b 的二进制是 0011 ,则 a & b 的结果为 0001 ,即 1。例如: a >> 1 , a 为 5 (二进制 0101 ),右移1位后结果为 0010 ,即 2。例如: a << 1 , a 为 5 (二进制 0101 ),左移1位后结果为 1010 ,即 10。例如: ~a 的结果为 1010 (如果是8位表示),即 -6 (有符号数的补码表示)。- 逻辑或(||):只要两个操作数中有一个为真,结果就为真。
2025-03-13 22:28:39
1461
1
原创 static 用法,函数递归与迭代详解
3、static修饰函数(和static修饰全局变量类似):函数也是具有外部链接属性,只要在其他的.c文件中正确的声明也是可以使用的,static修饰函数,让函数的外部链接属性变成内部链接属性,使函数只能在自己所在的.c文件中使用,其他的.c文件无法使用。存储在静态区的变量和全局变量是一样的,生命周期和程序的生命周期一样了,只有程序结束,变量才销毁,内存才回收,但是作用域是不变的。很容易就写下如图的递归求斐波那契数列,斐波那契数列是不合适用递归的,但是要通过使用递归的形式来描述的。有没有可以解决的办法呢?
2025-03-10 13:45:45
606
1
原创 二分查找(折半查找)详解
第三次查找下标left是5,right是6,(5+6)/2=5(mid),值是6不等于7,所以还需要再次进行查找:还在右边;所以left再向右移动一位变为6,此时左右下标相等,再进行第四次的计算,(6+6)/2=6,(下标),此时它的值是7,我们找到值为7的下标是6。题目:给定一个升序的整型数组,这个数组中查找到指定的值,找到就打印n的下标,找不到就打印找不到。例如找到其中 k=7 的。二分查找也叫折半查找,效率高,但是条件苛刻,只有在有序的。数据才可以使用这种方法;接下来我就为大家介绍这种方法!
2025-03-07 19:06:51
357
6
原创 C语言:一维数组、二维数组 、函数 详解
函数在调用rand函数之前先调用srand函数,通过srand函数的参数seed来设置rand函数生成随机数的时候的种子,只要种子在时刻变化,每次生成的随机数序列也就变化起来了。随机数的生成:rand生成的随机数是伪随机的,是通过某种算法生成的随机数。2、变长数组:数组的大小是可以使用变量来指定的,在程序运行时,根据变量的大小来指定数组的元素个数,而不是说数组的大小时可变的。1、打印二维数组,date[3][5] 中表示是一个3行5列的二维数组,3是行,5是列,行数可以省略,但是。
2025-02-26 22:04:09
961
4
原创 C语言:分支和循环的应用:写一个“猜数字”游戏(扫雷)
/rand()%100的值在0~99加一就是1~100。printf("选择错误,重新选择!printf("恭喜你,猜对了\n");printf("退出游戏\n");printf("猜大了\n");printf("猜小了\n");//游戏的逻辑————1、生成随机数2、猜数字。printf("请猜数字:");printf("请选择:");case 1://玩游戏的逻辑。//整个工程调用一次就可以了。//设置随机数的生成起点。
2025-01-20 18:39:09
428
6
原创 C语言基础:语句(5种)、数据类型、算数操作符、占位符详解
如果使用sizeof计算长度,打印时需要用 printf 需要填写"%zd",因为sizeof运算符的返回值,c语言是无符号的整数,并没有有具体的数值,所以用 size_t 来统一表示sizeof的返回值类型,对应当前系统的sizeof的返回值类型。%c(字符)、%d(整数)、%f ( float )、 %c(字符)、%lf (double)、%Lf(long double)1、内置类型:字符型(character)、浮点型(float、double)、整形(int)、布尔类型(—Bool)
2025-01-13 18:58:12
2025
5
原创 c语言常见概念第二章
8、\b是一个退格键,光标回退一个字符,但是不删除字符(若\b在中间会覆盖一个其他字符,但是不删除其他字符)。如上图:表示将\后的八进制数字转换为十进制的数字,这个数字作为ASCII码值表示的字符就是打印的内容。-----strlen是一个库函数,用来求字符串长度的,统计的是字符串中\0之前的个数。12、\0就是\ddd这类转义字符的一种,用于字符串的结束标志,其ASCII码是0.
2025-01-13 08:35:50
879
9
原创 c语言常见基础
(2)main后边的()被漏掉。(3)代码中不能使用中文符号,比如括号和分号,(4)一条语句结束后,要有分号。c语言是编译型计算机语言,它是众多计算机语言中的一种,人们是通过计算机语言写的程序,给计算机下达指令,让计算机工作的,c语言源代码都是文本文件,文本文件本身无法执行,必须通过。注:stdio主要含义是: std------standard , input ,output。,即使一个项目中有多个.c文件,但是只能有一个main函数,因为程序的入口只能有一个!byte------字节 (
2025-01-12 19:10:50
1110
6
原创 新手“码农”关于编程的一些理解与心得
3、要选择合适的编程语言,比如对网页开发感兴趣,可以从HTML、CSS开始,无论学习那种编程语言首先基础语言C语言是必须要了解并且能够熟练运用的,为之后的编程做准备,理解最基本的编程语言的作用和基本语法。对于刚入门的新手的我来说,学习编程的目的是为了让我充实自己,拥有一种解决问题的能力,不断挑战自己,突破自己。1、学习编程是一个逐步的过程,永远不要低估自己日复一日的坚持,也不要高估自己几天的努力,总之,学习编程是一个日积月累的过程,需要一点点积累的,“速成”编程是不可能的!
2025-01-11 18:03:02
558
7
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅