- 博客(40)
- 收藏
- 关注
原创 c++初阶--内存管理
int main()// new/delete 和 malloc/free最大区别是 new/delete对于【自定义类型】除了开空间还会调用构造函数和析构函数free(p1);delete p2;// 内置类型是几乎是一样的// Cfree(p3);delete p4;free(p5);return 0;
2023-10-14 20:31:51 332 2
原创 linux--gdb的使用
1,Makefile默认release版本,要想进入debug版本需添加-g后缀2,进入调试界面:gdb + 可执行程序3,显示代码:l(list)+ 数字(1/0) 不停回车可一直显示到结束并显示相关信息4,运行代码: r(run)5,打断点: b(break point)+ 行号/文件名:行号/函数名/文件名:函数名(函数名默认在函数第一行打断点)6,显示断点信息:info + b7,删除断点:d(delete) + Num8,重新添加断点,Num只会累加!9,退出gdb: quit
2023-10-09 19:15:16 493 1
原创 linux--进度条
在这之前,我们要先搭建好一个框架,如下:先依次创建好一个头文件(pb.h)用以声明和定义宏,一个源文件(pb.c)用于书写进度条源代码,一个源文件(main.c)用于测试以及后续搭建实际的场景,以及makefile。makefile:我们先从最简单的版本开始讲起,这个版本的进度条只是以单独的一个函数形式呈现出来,主要是为了先搞清楚程序的运行原理。进度条一般是出现在下载任务,加载任务的某些场景中的,我们用rate来模拟当前下载的进度,MAX_RATE来模拟总进度,我们先创建一个字符数组用来存放我们要打印
2023-09-20 09:43:41 399
原创 C++初阶--类和对象(中)
如果一个类中什么成员都没有,简称为空类。空类中真的什么都没有吗?并不是,任何类在什么都不写时**,编译器会自动生成以下6个默认成员函数。**默认成员函数:用户没有显式实现,编译器会生成的成员函数称为默认成员函数。我们先来看之前写过的日期类对于Date类,可以通过 Init 公有方法给对象设置日期**,但如果每次创建对象时都调用该方法设置信息,未免有点麻烦**,那能否在对象创建时,就将信息设置进去呢?构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用,以保证每个数据成员都
2023-09-11 18:05:13 349 2
原创 C++初阶--类和对象(上)
本章开始,我们就要学习c++类与对象的相关内容了,在学习之前,我们首先要了解到底什么是类,什么是对象。类由成员函数和成员变量。class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。类的定义方式一般有两种:1,声明和定义全部放在类体中,需注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。
2023-08-17 10:45:47 98 1
原创 C++初阶--C++入门
从本章开始,我们就要正式的进入到C++的学习了。C++是在C的基础之上,容纳进去了面向对象编程思想,并增加了许多有用的库,以及编程范式等,同时对C语言某些设计不合理的地方进行优化,如在作用域,IO,函数,指针以及宏方面。下面我们先从一些较容易理解的知识开始讲其起,为后续学习类和对象打下基础。定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对**{}即可,{}中即为命名空间的成员**。其中命名空间中可以定义的成员有变量/函数/类型。举几个例子。
2023-07-26 16:25:50 243 1
原创 数据结构初阶--排序1
排序在我们的日常生活中无处不在,比如对若干个学生的期末成绩,可以依据姓氏,学号,某科成绩,总成绩等进行排名,富豪榜的排名,游戏中的战力排名,甚至是在日常生活中的扑克牌,我们也会依据其数字大小等对其进行排序,所以我们在学习编程的过程中,排序一定是十分重要并且对于我们十分有帮助的东西,所以本篇文章,将对几大重要排序算法–冒泡排序,插入排序,希尔排序,选择排序,堆排序,快速排序,归并排序进行讲解。
2023-07-11 10:00:11 506 2
原创 数据结构初阶--二叉树OJ1
因为我们要探究的是是否为轴对称,所以我们首先第一步要将其分成左右两个子树,后续的递归操作我们再在另一个函数中去实现,注意比较对象是。遍历root的所有节点,并每次与subroot进行匹配,这个操作在另一个函数中实现,逐个比较subroot和。这道题的重点在于我们要有返回值,而返回值就是数组长度,即二叉树的节点个数,难点在于。左子树和左子树比较,右子树和右子树比较,如果都为空,说明走完了,则返回。计算大小的函数,开辟数组并返回的主函数和将节点的值放入数组的函数。,因为我们要对数组在另一个函数里访问,所以在。
2023-07-01 12:54:39 388 2
原创 团体程序设计天梯赛-练习集(1-30)
目录Hello world打印沙漏个位数统计计算摄氏温度考试座位号连续因子念数字求整数段和N个数求和比较大小A-B计算指数计算阶乘和简单题跟奥巴马一起画方块查验身份证到底有多二大笨钟谁先倒帅到没朋友重要的话说三遍奇偶分家输出GPLT后天正整数A+BI LOVE GPLT出租判断素数是不是太胖了一帮一自己写的,有很多写的很繁琐的地方,还望佬见谅。Hello world#include <stdio.h>int main(){ printf("Hello World!");
2023-04-12 15:05:07 1349 6
原创 数据结构初阶--算法的时间复杂度与空间复杂度
本篇博客开始,我们就将正式进入到数据结构初阶的内容讲解了。数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。比如我们生活当中常使用的微信,在一个微信群里会有一个成员的列表,我们可以对这个列表里的成员进行增删查改的操作。那么实际上数据结构就是在内存中管理这些数据的一种方式。算法(Algorithm):就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为输出。简单来说算法就是一系列的计算步骤。
2023-04-12 08:37:58 101 9
原创 C语言--程序环境与预处理
我们在写一个C语言程序的时候,时常会创建一个后缀为**.c**的文件,这个文件究竟是怎样变成可执行的程序的呢?其实是通过编译和链接这样的过程来实现。本篇文章我们就将围绕着编译和链接是什么来展开。这个用法很常见,看下面这几个例子# define MAX 1000 # define reg register //为 register这个关键字,创建一个简短的名字 # define do_forever for(;;) //用更形象的符号来替换一种实现 # define CASE break;
2023-04-07 17:10:40 395 23
原创 C语言--文件操作
我们为什么要使用文件呢?我们前面写过通讯录,但是我们发现,我们往通讯录中添加联系人后,一旦关掉程序,我们添加的联系人就都没有了,又要重新输入,这样的通讯录使用起来就很不方便。那么,我们怎么样做才能让数据持久化呢?我们一般数据持久化的方法有,把数据存放在磁盘文件、存放到数据库等方式。程序文件(源文件)、数据文件(从文件功能的角度来分类的)
2023-03-29 17:18:08 743 14
原创 C语言--动态内存管理1
我们目前已知的内存开辟方式是要指定长度的,比如以下这两种方式0 };这些空间开辟的大小时固定的,无法被修改如果是数组,在申明的时候,必须指定数组的长度,它所需要的内存在编译时分配.再比如我们的通讯录,如果我们一开始就确定了人员个数的最大值,那么一旦到达这个上限,就无法继续录入数据了,我们能不能实现一种能根据我们的需求灵活更改空间大小的方式呢?这时候我们就需要动态内存开辟空间了。
2023-03-24 16:29:25 502 13
原创 C语言--自定义类型详解
这个知识在之前的博客中也详细讲过了,这里只简单回顾一下int x;int y;} p1;//声明类型的同时定义变量p1 struct Point p2;//定义结构体变量p2 //初始化:定义变量的同时赋初值。x , y };struct Stu //类型声明 {//名字 int age;//年龄 };//初始化 struct Node {int data;} n1 = {10 , {//结构体嵌套初始化 struct Node n2 = {20 , {
2023-03-21 19:45:54 1722 19
原创 C语言--字符串函数2
第一个参数指定一个字符串,它包含了0个或者多个由sep字符串中一个或者多个分隔符分割的标记strtok函数找到str中的下一个标记,并将其用 \0 结尾,返回一个指向这个标记的指针。(注:strtok函数会改变被操作的字符串,所以在使用strtok函数切分的字符串一般都是临时拷贝的内容并且可修改。)strtok函数的第一个参数不为 NULL ,函数将找到str中第一个标记, strtok函数将保存它在字符串中的位置strtok函数的第一个参数为 NULL ,函数将 在同一个字符串中被保存的位置开始,查
2023-03-15 15:26:37 862 27
原创 C语言--字符串函数1
我们发现\0是被覆盖掉了的。所以在追加的时候是从\0开始的。我们在使用这个函数的时候要注意以下几点源字符串必须以 ‘\0’ 结束。目标空间必须有足够的大,能容纳下源字符串的内容.目标空间必须可修改.
2023-03-11 10:40:45 1063 35
原创 C语言--模拟实现库函数qsort
qsort是一个库函数,是用来排序的库函数,使用的是快速排序的方法(quicksort)。qsort的好处在于:1,现成的2,可以排序任意类型的数据。。排序的原理是两两相邻的元素进行比较。但是冒泡排序的缺陷就在于只能两两整型进行比较,可现实生活中很多东西的比较并不只是仅仅局限于数字的比较,比如名字的排序等等。但是qsort就可以排序任意类型的数据。
2023-03-02 19:59:04 789 36
原创 C语言--指针进阶2
回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。
2023-02-27 09:07:38 1053 40
原创 C语言--指针进阶1
str1和str2由于是两个完全不同的数组,所以所开辟的空间肯定不相同,首元素的地址肯定也不相同。,我们可以把二维数组的每一行看作一个整体,作为一个元素,相当于一维数组是二维数组的数组,所以。我们可以把这个字符串类比成一个数组,同样都是存放的首元素地址,那么二者又有什么不同呢?一维数组传参,形参可以是数组,也可以是指针的,当形参是指针的时候,要注意类型。二维数组传参,参数可以是指针,也可以是数组。,所以在函数传参的时候,传的是首元素地址,代码如下。,而第二种的p指向的是数组的首元素,arr数组是。
2023-02-23 20:28:40 1700 40
原创 C语言--数据的存储2
S占一个比特位这个比较好理解,因为S不是0就是1,所以只用一个比特位来存储即可。而对于M,因为我们知道M是恒大于1小于2的,所以他的形式永远都是1.xxxxxxx.....,所以根据IEEE 754规定,在计算机内部保存M时,默认这个数的第一位总是1,因此可以被舍去,只保存后面的xxxxxx部分。比如保存1.01的时候,只保存01,等到读取的时候,再把第一位的1加上去。这样做的目的,是节省1位有效数字。以32位浮点数为例,留给M只有23位,将第一位的1舍去
2023-02-15 12:42:49 914 43
原创 C语言--数据的存储1
根据我们定义的左边为低地址,右边为高地址,**大端(存储)模式**定义为:数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中。**小端(存储)模式**定义为:数据的低位保存在内存的低地址中,而数据的高位,保存在内存的高地址中。速记的口诀是:**小同大异**那么通过我们所学的知识,上述图片中的**F6 FF FF FF就为小端存储模式**。
2023-02-08 14:35:51 742 27
原创 C语言--模拟实现库函数strcpy
这样*p=20这段代码将无法实行。这是因为const如果放在*左边,修饰的是*p,表示的是指针指向的内容,是不能通过指针来改变的,但是指针变量本身(p)是可以修改的,如果放在*右边,修饰的就是p,和放在左边完全相反,指针变量本身将无法被修改,但指针指向的内容却可以被修改,num还是会被修改为20。
2023-02-03 08:00:00 3019 73
原创 C语言--结构体初阶
在前面的C语言学习中,我们学习了形如char,short,int,float等的不同类型的变量,但是当我们要描述一个人的时候,我们发现单靠其中的某一种类型的变量很难完整的描述出一个人来,人有年龄,性别,身高,身份证编号等等的信息,所以人是一个复杂的对象,这时我们就要引出结构体类型,它可以把要描述的对象的不同信息放到里面去结构是一些值的集合,这些值称为成员变量。结构体的每个成员可以是不同类型的变量。到目前为止,我们学习的数组也是一个集合,数组是一组相同元素的集合。而结构体也是一些值的集合,
2023-01-31 09:58:18 801 42
原创 C语言--指针与数组
虽然一开始vp被赋予的地址是超出限制范围的,但是在for循环中首先经历了一次自减,访问下标就来到了4的位置,这时候就不会越界访问了,(而指针同样也分整形指针数组(即这个数组内都存放的是整形元素的地址),字符指针数组(即这个数组内都存放的是字符元素的地址),类比如图7。允许指向数组元素的指针与指向数组最后一个元素后面的那个内存位置的指针比较,但是不允许与。指针数组和数组指针要区分开来,数组指针是指存放数组的地址,而指针数组是指。,那么在C语言中的指针+指针到底有没有意义呢,实际上这种运算是。
2023-01-27 22:15:47 3011 55
原创 C语言--指针初阶
在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑储存器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过他能找到以他为地址的内存单元。好了,关于C语言指针初级的内容就讲到这里了,如有出入,欢迎大佬们指指正。
2023-01-25 22:11:49 799 42
原创 C语言--二分查找
中间位置下标为(left+right)/ 2,这样写很容易想,但有一个不好的点是,如果我们查找的范围很大,可能left+right会超出限制范围,所以我们写成left+(right-left)/2即可,乍一看差不多,但这样写的好处在于无论在什么时候的运算结果都不会超过right。在前面的引子中就有提到过,主要思想就是折半,从中间开始找,找的位置大了就往左边找,相反,找的位置小了就往右边找,我们设置一个区间,左边界为。由常规方法的经验可以知道,要传递的参数有数组,下标和长度(这是为了赋值变量right)。
2023-01-23 23:18:10 423 39
原创 C语言--冒泡排序
冒泡排序(Bubble Sort),是一种计算计领域领域的较简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行,直到没有相邻元素需要交换,也就是说该元素列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。
2023-01-23 21:20:57 583 20
原创 C语言--扫雷游戏
上一篇博客我们完整的把三子棋游戏代码从头到尾学习了一遍,今天我们接着来继续学习下一个游戏——扫雷,说到扫雷,大家应该都不陌生,作为电脑自带的小游戏,它给我们的童年带去了无限的欢乐,而现在的我们,要完成从玩游戏到做游戏的转变,从雷的放置,玩家的排雷到输赢的判断,都是身为游戏创作者的我们该思考的,接下来让我们用代码来一点一点的实现吧到这里扫雷游戏的流程基本就能顺利进行了,当然,还有许多功能比如标记雷,时间限制等没有被实现,如果本篇文章或代码有所出入,欢迎各位大佬指正。
2023-01-20 01:25:33 386 31
原创 C语言--三子棋游戏(数组的应用)
无论是游戏还是软件的开发,短短几十行代码肯定是无法实现的,就如我们今天马上要学习的三子棋小游戏,都需要几百行代码,才能实现从菜单打印,棋盘初始化,玩家下棋,电脑下棋,判断输赢等的逻辑关系联通,这对于刚刚接触C语言的初学者而言,肯定是编程路上的一道大坎,但是我相信,当你能熟练地书写出三子棋,扫雷这些游戏时,那种成就感一定是无与伦比的,那么从现在开始,让我们一起进入三子棋游戏代码的学习当中吧。
2023-01-17 16:34:52 328 34
原创 C语言--汉诺塔问题(递归应用)
那么如果此时有n个圆盘,可以分成第n个圆盘和上面n-1个圆盘,然后上面n-1个圆盘又可以分成第n-1个圆盘和上面n-2个圆盘,以此类推,直到最后上面没有圆盘(即只剩下一个原盘)时,直接将这个圆盘放到C柱上即可。第一步:首相将小圆盘放到C柱上,然后再将中圆盘放到B柱上,接着再把小圆盘放到b柱上。A柱上有小中大三个圆盘按顺序摆放,要求把三个圆盘转移到C柱上,并且在移动过程中,我们把上面提到的三个步骤设计成一个函数,不妨设为hanoi(n,x,y,z)(第二步:将大圆盘放到C柱上,再将小圆盘放到A柱上。
2023-01-05 21:26:39 512 8
原创 C语言--程序的循环控制
本篇文章将对三种循环结构———do-while循环 while循环 for循环进行逐一分析和比较。循环结构的三个要素:循环变量、循环体、循环终止条件。·(一)do-while循环举个例子do是“执行”的意思,而while是“在····期间”的意思,大括号内部的内容称为执行语句,也称循环体。而根据do语句的处理流程,只要while()中的表达式判断结果不为0,语句就会循环执行,反之,若为0,则循环结束。这里特别要注意对判断结果的理解,这里判断结果为0指的是假,不为0指的是真,并不是判断内部某个变量的运算结果是
2022-12-06 19:37:04 3524 13
原创 全新的开始
我是一名公安部直属院校的一名在校大学生,因为一些原因也是和计算机结下了不解之缘,最近几天也在开始接触c语言,作为一门最基础的计算机语言,.把它学好学透对未来的发展是至关重要的,受到父母的影响,未来我也会向消防行业,即智慧消防方向发展,通过物联网技术让消防行业在未来逐步走向智能化,一体化,能更好i的服务广大的人名群众。所以每周看教程,看直播的时间不能少,下来的练习也要做足,正所谓多多益善。因为我是一名警校生,平时大部分的时间都被集合所拆散,变成许多零散的时间,但正是这样,就更应该把这些碎片化而的时间利用好。
2022-12-02 19:27:45 184 9
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人