- 博客(33)
- 收藏
- 关注
原创 C++基础入门
引用做一个别名,相当于重新定义一个符号,这个符号和引用实体共享操控同一块空间这里a和b操控同一块内存空间,对b的操作也就是对a的操作比如说在语法上来说,引用是不占用空间的,但是底层也是指针,由编译器进行转换。
2023-07-02 21:31:27
499
原创 一文带你理顺C++中的const
c++中的const是一个很强大的助手,它允许你指定一个语义约束,表明某一个值不应该被更改,编译器会帮你强制执行这个约束。
2023-03-18 11:52:32
223
原创 Linux进程控制
options:options默认为0,表示阻塞式的等待,但是如果想在等待期间做一些其他事情的话,就要更改options参数为WNOHANG(wait no hang),这也是一个宏. 如果使用非阻塞的调用方式,那么需要多次调用访问子进程是否退出。通过fork创建出来的子进程和父进程是共享某一段代码的,但是如果子进程如果想要拥有全新的属于自己的一段代码该怎么办呢?要说是系统真正提供给我们的调用接口,还得是execve,上面的函数底层调用的全部都是execve接口,是系统做的基本封装。(查看进程的退出码)
2022-11-28 21:40:32
756
1
原创 C++多态十问
构造函数可以是虚函数吗?答:不能,因为对象中的虚函数表指针是在构造函数初始化列表。析构函数可以是虚函数吗?什么场景下析构函数是虚函数?对象访问普通函数快还是虚函数更快?答:首先如果是普通对象,是一样快的。对象或者是引用对象,则调用的普通函数快,因为构成多态,运行时调用虚函数需要到虚函。虚函数表是在什么阶段生成的,存在哪的?答:虚函数表是在编译阶段就生成的,一般情况。的调用方式无法访问虚函数表,所以静态成员函数无法放进虚函数表。静态成员可以是虚函数吗?答:不能,因为静态成员函数没有。函数可以是虚函数吗?
2022-10-23 16:26:09
187
原创 C++中为什么推荐要把基类析构函数设置成虚函数
在C++中常听老师讲要把基类析构函数声明成虚函数,这是因为要防止使用基类指针在调用派生类对象析构函数时,触发静态绑定,调用不到派生类的析构函数,导致内存泄漏。在这里如果没有把基类析构函数声明成虚函数,那么就没有构成多态,那么编译器只会去调用Base的析构函数而非Derive。
2022-10-23 13:51:28
256
原创 C++基础知识剖析第一弹
在编程中时常会出现重名的现象,所以C++设计了namspace来避免这个问题。namespace将全局作用域分成几部分作用域,因为在不同的作用域中允许存在同名变量,所以使用namespce可以防止同名变量冲突。
2022-10-07 11:08:09
432
原创 C++实现STL_List
接下来实现List类,List类主要是完成对节点的操作,比如说链接前后节点,给链表插入数据,控制迭代器等等,List的数据成员设计成一个指向节点的指针,和STL保持一致。我们这里实现的链表是带哨兵位的双向循环链表,所以构造函数需要创建一个哨兵位节点,让。链表节点包含前驱指针和后驱指针,同时把构造函数写好,构造函数只需要为节点中的数据成员赋值,并将前驱节点和后驱节点置成空即可。这时候的链表还只是一个空架子,只有一个哨兵位,其他啥都没有,所以我们像插入数据,就实现一个简单的尾插函数。
2022-10-07 11:06:47
553
原创 Typora免费版下载安装(小白必看)
找了好多网盘上的Typora下载后打开要么提示过期,要么说现在只是试用,去网上求解但是呢大佬们的解决方法又不是特别懂。需要的同学可以加我qq1767703633。我发给你哇,如果可以的话就点个赞收藏一下呗。于是找老师要了一个安装包,发现可以通过。...
2022-07-25 17:44:47
1359
2
原创 排序入门—插入排序和希尔排序
依然拿上述数组(排成升序)举例这个数组中的1就是我们抓的第一张牌,显而易见的是第一张牌不用排序,我们接着抓牌,抓到第二张牌是3,抓到后与1进行比较,3不比1小则排在后面,接着抓到9,9不比3小,排在后面,抓最后一张牌是3,3比9小则要进行比较我们先拨开9这张牌,看到9的前面排着一个3,3不比3小,所以后面的这张3就放在前面那张3的后面,9的前面,那么抓牌就完毕了。可以看看动图来理解一下过程。对于插入排序,当序列本身比较有序时,这种排序的效率还是挺高的,但是如果处理的序列非常无序,时间效率则会极其低下。...
2022-07-23 23:56:15
665
1
原创 数据结构中的堆排序算法
如果子节点比父节点大,那么则停止这个过程(因为原本的数组就是一个堆,是满足堆的性质的,如果这个数据比其父节点大,那么一定比它的祖先大,所以不用再进行调整),这就是向上调整算法。向上调整算法是由插入数据引出的,而向下调整则是由删除数据引出的。以这课二叉树为例解释一下向上调整算法,此时的child是最后一个节点10,父节点是28(根据子节点和父节点的关系计算,可以看上一篇文章),28比10大,因为是小堆所以要交换二者的值,并将原来28的位置(即parent)赋给原来10的位置(即child)。......
2022-07-19 20:35:02
650
原创 二叉树—堆
在插入数据到堆中时要注意插入元素是否会使得堆不再为堆(因为堆的性质是父节点要大于或小于子节点),所以在插入数据之后需要向上检索其父节点是否不满足当前堆的性质,如果是则交换父子数据,接着循环,直至满足为止。二叉树也可以选择链表和数组表示,当二叉树是完全二叉树或者满二叉树时,用数组表示更优,因为用数组找寻子节点不需要指针,仅需要数组下标即可,详情请查看上篇文章,附上传送门。堆顶元素的删除并不是简单将数组元素整体往前挪动一位那么简单,如果仅仅是挪动,那么会破坏堆结构,父子间的关系可能会改变。......
2022-07-17 18:19:02
575
1
原创 交换二进制位中的奇偶位
提取奇数位按位与上01010101010101010101010101010101(二进制)------0x55555555(十六进制)提取偶数位按位与上10101010101010101010101010101010(二进制)------0xaaaaaaaa(十六进制)然后奇数位左移一位,这时候奇数位就变成了偶数位,偶数位右移1位变成奇数位,再将他们按位或就交换完毕。这题涉及到位运算,要交换奇数偶数位,可以先把奇数偶数位提取出来。...
2022-07-17 10:30:33
332
原创 PR初始入门
窗口的顺序可以打乱,要记住窗口的名字,在窗口位置可以添加新窗口,可以恢复默认布局。一般码率是10,码率低了会特别糊,码率也不用太高,太高了效果不明显却很占用内存。工具栏剃刀工具剪辑,剃刀工具可以将一段音频剃成两段。2.主要属性(在项目窗口右键新建-序列-设置)进入pr,新建项目中可以设置视频存放文件夹。序列用来规定成品视频大小,效果剪辑都在序列里。编辑-首选项-媒体缓存可以选择缓存文件夹。选H.264+MP4模式最好。然后将两段音频剪到一起,导出就好。25帧比较适合人眼观看。2.4码率,比特率。...
2022-07-16 12:11:02
1947
原创 树和二叉树(C语言)
一. 树的定义 有一个特殊的结点,称为根结点,根节点没有前驱结点 除根节点外,其余结点被分成M(M>0)个互不相交的集合T1、T2、……、Tm,其中每一个集 合Ti(1D,就死循环了。二.树的...
2022-07-13 17:15:11
345
原创 12月1日作业
这道题目说给出n个数,要我们去重并排序,注意一下这里输入的是正整数,也就是说输入的是不为零的数。对于这种要求去重的题目我们可以用下面这种方法做arr[k] = k;这里我们直接把k赋值给对应下标的数组,这样的话重复的数会直接剩下一个,同时数的排列也是从小到大,一举两得。具体思路:先创建一个足够大的数组,将输入的序列放到对应下标数组,这是输入部分。然后将数组中不为零的元素打印出来即可具体代码://法一////int main()////{//// int n = ...
2021-12-01 22:24:56
153
原创 练习+浮点型在内存中存储
这道题答案是啥呢?相信电视机前很多观众已经猜到答案了,答案就是 -1; -1; 255;那么为什么是这个答案呢?我们一起来分析一下。首先-1占4个字节,而char类型只开辟1个字节,这里自然需要发生截断可见若有符号则最后输出的是-1,无符号则输出2^8- 1 = 255这道题-128显然是8个字节放入char仍然要发生截断,与上一题相同截断后补位这里的运算是按照补码方式进行的...
2021-11-26 22:44:37
181
原创 C语言进阶数据类型详解
最近我学了C语言进阶版数据类型。关于这一节可以分成整型家族,浮点型家族,boll型,指针类型,构造类型,等等,接下来再了解一下把。一.类型1.整型家族这里为啥说char也属于整型家族呢?这是因为字符本质上是ASCLL码,所以字符其实属于整型家族。在这里还要提的一点是int, short, float, double ,都是分 有符号和 无符号类型的,当然char也分这两种,但是后者和前者是有区别的,前者有符号与否可由我们指定,即 (signed) int / short / fl...
2021-11-23 23:56:48
666
原创 今日作业博客
今天做了一道题目感觉挺不错的,题目是去除重复整数并重新排序。开始我的想法是先创建一个数组代表一段序列,然后写两个函数,一个去重,一个进行冒泡排序,结果发现实在是过于复杂,所以万般无奈之下只好瞄了一眼答案(真的只瞄一眼),发现这题解答看了真的不????感叹我是真的菜啊收录在这里,提醒我要走的路还很远,不要妄自尊大!!!!!...
2021-11-22 22:47:18
317
原创 C语言实现扫雷
我们今天来看一下如何用C语言实现扫雷。实现扫雷需要啥呢?咱想想哈,扫雷是不是得有个盘给他装着,然后咱选完之后是不是得告诉咱周围有多少个雷。所以咱得有两个盘,一个用来装雷,一个提供雷的信息。思路这不就出来了吗。初始化雷盘void init_arr(char arr[ROWS][COLS], int row, int col, char set){ int i = 0; int j = 0; for (i = 0; i < row; i++) { for (j = 0; j &
2021-11-13 17:58:45
434
原创 C语言实现三子棋
相信在座的各位都玩过三子棋和扫雷,但是有哪一位想过自己能够在电脑上实现三子棋呢?今天我们就一起来实现一下吧。三子棋首先我们看三子棋,三子棋的实现分两步走,首先是测试逻辑,再是游戏逻辑。测试逻辑#define _CRT_SECURE_NO_WARNINGS 1#include "game.h"void menu(){ printf("******************\n"); printf("******1.play******\n"); printf("*...
2021-11-13 16:01:00
2490
原创 C语言中的冒泡排序
目录冒泡排序的原理冒泡排序的步骤冒泡排序代码冒泡排序的原理冒泡排序的步骤假设我们现在有一个无序数组 arr[] = { 2,9,1,3,7,6 }; 我们要用冒泡排序法让其变得有序,到底该怎么做呢?我们先来看一下思路在这一次(注意!是一次!)冒泡排序中,我们让这个无序数组中最大的数9排到了最后,以此类推,我们总共需要进行多少次这样的排序呢?对的,答案是5次。好的,那么这是我们对冒泡排序外部的分析,那么一次冒泡排序在数组里面要进行多少次比...
2021-11-07 15:39:19
739
原创 10月17日所学
1.变量变量顾名思义就是可变的量。变量的声明形式为 数据类型 +变量名 ,再赋值。对于变量而言有两种类型,即全局变量和局部变量。全局变量的作用域是整个程序,生命周期为程序执行所需时间。而局部变量的作用域为相应的代码块,生命周期从相应代码块执行开始,代码块执行结束为止。2.常量常量有四种类型a.字面常量 这玩意就直接写 例如 1000 ‘w' 等等b.const定义常变量 形式:const 数据类型 变量名 = 啥啥啥需要注意的是这种定义只是将变...
2021-10-17 23:29:26
63
1
原创 编程小白的第一篇博客
大家好,我是来自武汉某所师范大学计算机专业的编程小白。今天想要说出一些关于未来学习编程的想法。 开始接触到编程是因为邻居叔叔的熏陶。其实我开始对于编程没有啥特别的偏好,一部分是因为我自己对于电脑啥的不是很懂,还有一部分是因为我根本就不了解编程到底是个啥。但是我还是觉得能够通过敲代码这么一种晦涩的方式来产生出一个个网页,程序等等活生生的事物很神奇,再加上目前计算机专业就业良好的形势和高薪,我选择了计算机专业。 我对于计算机还处在一个懵懵懂懂的状态,因此今天我只能谈谈...
2021-10-16 20:26:24
116
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人