自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++函数模版初阶

使用:在编译器编译阶段,对于模板函数的使用,编译器需要根据传入的实参类型来推演生成对应类型的函数以供调用。比如:当用double类型使用函数模板时,编译器通过对实参类型的推演,将T确定为double类型,然后产生一份专门处理double类型的代码,对于字符类型也是如此。模板参数实例化分为:隐式实例化和显式实例化(编译器通过推出类型,用函数模版,生成对应的函数)概念:函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型产生函数的特定类型版本。格式:template。

2024-05-05 20:10:41 986

原创 C++内存管理

引入:C语言内存管理方式在C++中可以继续使用,但有些地方就无能为力,而且使用起来比较麻烦,因此C++又提出了自己的内存管理方式:通过new和delete操作符进行动态内存管理。申请和释放单个元素的空间,使用new和delete操作符,申请和释放连续的空间,使用new[]和delete[],注意:匹配起来使用。malloc/free和new/delete的共同点是:都是从堆上申请空间,并且需要用户手动释放。区域划分:内核空间、栈、内存映射段、堆、数据段(静态区)、代码段(常量区)申请:单个:new 类型;

2024-05-05 10:08:06 795

原创 类与对象(下)

内部类是一个独立的类它不属于外部类,更不能通过外部类的对象去访问内部类的成员。友元函数可以直接访问类的私有成员,它是定义在类外部的普通函数,不属于任何类,但需要在 类的内部声明,声明时需要加friend关键字。注意:内部类就是外部类的友元类,参见友元类的定义,内部类可以通过外部类的对象参数来访问外部类中的所有成员。我们日常使用的时候建议使用初始化列表,因为即使我们在函数体内初始化,我们也会走初始化列表。友元类的所有成员函数都可以是另一个类的友元函数,都可以访问另一个类中的非公有成员。

2024-05-04 21:48:36 991

原创 类与对象(中):类的6个默认成员函数

不能改变内置类型)用于内置类型的运算符,其含义不能改变(例如:+ ,它的含义不能改变)作为类成员函数重载时,其形参看起来比操作数数目少1,因为成员函数的。

2024-05-02 15:43:40 465

原创 类与对象(上)

/ 类体:由成员函数和成员变量组成// 一定要注意后面的分号class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。定义方式声明和定义全部放在类体中,需注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。int _age;

2024-03-04 22:20:39 877 9

原创 初识C++

'::' 域作用限定符分类:全局域、局部域、命名空间域、类域在一个域中定义同一个关键字,会因为重复而产生错误编译器搜索原则先去当前局部域找,再去全局域找结果:​​。

2024-03-02 12:30:21 846

原创 liunx权限

什么是权限?定义:通过一定的条件,拦住一部分人,给另一部分人权利,来访问某种资源,有无,或者能还是不能的问题权限的本质linux中的用户root(超级管理员)其他(普通用户)用户转换普通用户转换为root:susu -注意:在变换得时候需要输入root的密码root用户变化为普通用户su + 用户名不进行用户转换获得权限指令提权:sudo + 任意命令为什么sudo对指令进行提权的时候,输入的是我们自己的密码?默认目前普通用户无法执行,需要进行配置。

2024-02-23 21:23:59 877

原创 Linux常用操作指令

在 more 的时候,我们并没有办法向前面翻, 只能往后面看 但若使用了 less 时,就可以使用 [pageup][pagedown] 等按键的功能来往前往后翻看文件,更容易用 来查看一个文件的内容!说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录, 则它会把前面指定的所有文件或目录复制到此目录中。功能:对于目录,该命令列出该目录下的所有子目录与文件。在linux中,以 . 开头的文件是隐藏文件,在linux中,任何目录下都会有两个隐藏目录。

2024-02-20 06:45:42 935

原创 数据结构排序:插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序

先使用数据进行建堆,在升序排列中,建立一个大堆,建好后最大的数据在最上面,然后将最上面的数据a[0],与最后位置的数据a[n-1]进行调换,这样a[n-1]位置的数据就是最大的了,最大数据就在了最后面;在对剩下的位置的数据进行调整,再调整为一个大堆,再将a[0](现在是第二大的数据)与a[n-2]的数据进行调换,这样第二大的数据就砸倒数第二个位置上;希尔排序法的基本思想是:先选定一个整数gap,把待排序文件中所有记录按gap分成若干个组,所有距离为gap的记录分在同一组内,并对每一组内的记录进行排序。

2024-02-19 17:13:15 1437

原创 树与二叉树

树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。有一个特殊的结点,称为根结点,根节点没有前驱结点 除根节点外,其余结点被分成M(M>0)个互不相交的集合T1、T2、……、Tm,其中每一个集合Ti(1

2024-02-19 15:52:33 977 1

原创 使用虚拟机进行Linux环境搭建

使用虚拟机软件, 将 Linux 搭建在虚拟机上. 但是由于当前的虚拟机软件(如 VMWare 之类的)存在一些 bug, 会导致环境上出现各种莫名其妙的问题, 比较折腾,但是免费。

2024-01-26 10:49:04 412

原创 数据结构队列实现(赋完整代码)

1.一种特殊的线性表,只允许在一段进行插入,另一段进行删除;2.进行插入操作的一端称为队尾,进行删除操作的一端称为队头;3.队列具有先进先出的特性 FIFO(First In First Out)队列总体来说是现实生活中的排队取号类似,先取票的,就先办理业务;队列中,先进入的,就先出去。

2024-01-15 15:42:31 406

原创 数据结构栈实现(赋完整代码)

1.栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。2.进行数据插入和删除操作的一端 称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。3.压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据也在栈顶。

2024-01-15 15:25:38 409

原创 数据结构链表完整实现(负完整代码)

在上一篇文章中,我们认识了顺序表,但是在许多情况中,顺序表在处理一些事件时还存在许多问题,比如:1.头插、头删或者在中部的插入或删除需要移动大量的元素,时间复杂度过高。2.增容需要申请新空间,拷贝数据,释放旧空间,会有不小的消耗。3.增容一般是呈2倍的增长,势必会有一定的空间浪费。例如当前容量为50,满了以后增容到 200,我们再继续插入了5个数据,后面没有数据插入了,那么就浪费了45个数据空间。为了解决这些问题,我们提出了如下结构,链表。

2024-01-13 22:27:44 869

原创 顺序表功能完整实现(附完整代码)

线性表(linear list)是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使 用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串… 线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的, 线性表在物理上存储时,通常以数组和链式结构的形式存储。简单来说,线性表就是在逻辑上呈一条直线的形式,用于存放n个具有相同特性的数据的结构。

2024-01-10 17:02:14 1185

原创 数据结构时间复杂度与空间复杂度

就从理论上来讲,想要获取一个算法的时间复杂度,那就必须将在计算机上运行,然后测量所需的时间,才能计算出它的时间复杂度。与算法效率有关的因素有很多,包括:算法所需的时间、空间成本等因素;在计算机相关中包括网络运行速度,硬件等因素都会对效率产生影响,而这些因素都是我们所无法掌控的,所以我们在进行算法效率评定中大致以所需的时间和空间作为主要的衡量标志,来对算法效率进行一个判定,这就是时间复杂度与空间复杂度。算法效率:考虑一个方法是否好,就要从它的效率上考虑,能高质量(即高效)的完成目标的算法,就是一个好的算法;

2024-01-10 14:12:29 986

原创 程序环境和预处理

FILE//进行编译的源文件LINE//文件当前的行号DATE//文件被编译的日期TIME//文件被编译的时间STDC//如果编译器遵循 ANSI C,其值为 1,否则未定义return 0;结果:​​语法: #define name stuff#define MAX 1000 //将MAX定义为100#define reg register //为 register这个关键字,创建一个简短的名字;) //用更形象的符号来替换一种实现。

2023-10-23 22:28:46 120

原创 C语言文件操作(上)

文章目录一、为什么使用文件二、什么是文件1.程序文件2.数据文件3.文件名三、文件的打开与关闭1.文件指针2.文件的打开和关闭fopen 与 fclose四、文件的顺序读写01 字符输出函数:fputs02 字符输入函数:fgetc03 文本行输出函数:fputs04 文本行输入函数:fgets05 格式化输出函数:fprintf06 格式化输入函数:fscanf07 二进制输出函数:fwrite08 二进制输入函数:fread五、 文件的随机读写01 文件指针定位函数:fseek02 返回偏移量函数:f

2023-10-18 11:58:13 95

原创 自定义类型:结构体、位段、枚举、联合

i. 成员变量:结构体是一些值的集合,这些值称为成员变量,每个成员可以是不同类型的变量ii. 与其类似的,数组:一组相同元素的集合i. 变量定义//声明类型的同时定义结构体变量int a;float b;}p1;//定义结构体变量//定义结构体变量return 0;ii. 初始化顺序初始化(默认)int a;float b;//定义的同时初始化//初始化//初始化return 0;指定顺序初始化int age;

2023-10-02 21:29:36 190 3

原创 字符串函数与内存函数讲解

1、功能:求字符串长度2、使用:(1)介绍:说明:a.返回类型是size_t,也就是无符号整形(只有正数没有负数)b.参数是char* 类型;加入const修饰是为了防止对str中存放的内容进行修改c.字符串已经 ‘\0’ 作为结束标志,strlen函数返回的是在字符串中 ‘\0’ 前面出现的字符个数(不包含 ‘\0’ )(2)头文件:<string.h>(3)举例:a.return 0;

2023-10-01 15:14:33 355 4

原创 指针笔试题讲解

数组名在大多数情况下表示数组首元素的地址,但是两种情况除外。(1)sizeof(数组名),这时表示整个数组的大小。(2)&数组名,这时表示整个数组的地址。

2023-09-25 20:46:45 277 6

原创 C语言日常刷题7

本题考查的是二维数组的元素访问,A选项是 正确的,X[i]就是第i行的数组名,数组名表示首元素的地址,X[i]表示第i行的第一个元素的地址,+j后就是第i行下标为j的元素的地址,整体解引用就是X[i][j],A正确。本题主要考虑数组越界访问的情况,二维数组的行和列都是从0开始的,对于a数组来说,行下标最大是1,列下标最大是2,D选项中1>2表达式的值是0,是正确的,其他选项行和列都可能存在越界,A是行越界,B是行和列都越界,C是列越界。7、给定一个大小为 n 的数组,编写一个函数找到其中的多数元素。

2023-08-30 22:01:06 246 2

原创 C语言日常刷题6

形参和实参的名字是可以相同的,在函数调用的时候,形参是实参的一份临时拷贝,分别占用不同的内存空间,所以A正确,B错误,及时形参和实参的名字相同,也是占用不同的内存空间,所以B错误;从数组的0下标处开始向后逐下标统计,计算当前下标左边之和,和右边之和,进行判断,相等则为中心下标,如果数组循环结束都没有找到中心下标,则返回-1,表示没有中心下标。函数f是没有返回值的,不能给int类型变量赋值,故A错误,同时需要一个整型参数,C中f(9)不能作为f的参数,也是错的,D。如果数组不存在中心下标,返回 -1。

2023-08-29 22:42:13 388

原创 C语言日常刷题5

B、C和D三个选项中均有错误。逻辑或运算如果前表达式为真,后表达式不计算,第一次循环时i为0,执行i++,第二次循环时i为1,是个真值,不再执行i++,也就死循环了(在 (a || b)中,只要a为真,那么整个表达式就诶真,不会在执行b)do-while循环中的循环体通常都是复合语句代码块,A错误,while(表达式)后面要写分号,B错误,while不能省,D错误(C 中,可以一直让while()判定为真,让后使用break跳出)解释:6 是最大的整数,对于数组中的其他整数,6 大于数组中其他元素的两倍。

2023-08-28 23:08:12 327 3

原创 C语言日常刷题 4

4.函数最终要返回一个int值,返回值类型没问题,但是这里要强调一个选项中没写出的问题,如果是牛客网上的题,会报编译错误,说该函数不是在所有情况下都有返回值,只有在if条件成立的情况下有返回值,一般在vs上这种情况能通过,编译器会给一个默认的返回值。=n为真,来到循环2判断m>n为真,执行m=m-n;,而当c为’p’时,从default进入,先后执行v0+=1;外循环有n次,当i=0,内循环为n次,当i=1,内循环为n-1次,当i=2时,内循环为n-2次,以此类推,总次数为n+(n-1)+(n-2)+…

2023-08-27 23:56:20 2170 2

原创 C语言日常刷题 3

全局变量i,在main()中修改为5,第一次在prt()中执行循环输出三次’*',i被修改为8,回到main()中第二次调用prt()时,i<8。输出为 n 个整数中负数的个数,和所有正整数的平均值,结果保留一位小数。参数b可以接收的是char*,而&c的类型是char(*)[10],C错误。为假,循环结束没输出,执行一次print(“\t”),再次回到主函数后i++变为9,i<=8为假,循环结束;3=-6,再计算-6+(-6)=-12赋值给a,所以a的值为-12,也就是整个表达式的值,所以应选择D。

2023-08-26 20:11:58 1914 4

原创 C语言日常刷题 2

B选项,考察double类型的比较,由于浮点数存在误差,不能直接判断两个数是否相等,通常采用比较两数之差的绝对值是否小于一个很小的数字(具体的可自己设定这样一个数,作为误差)来确定是否相等。此题注意静态局部变量的使用,static改变了i的生命周期,第一次调用函数:i初值是1,递归第二次调用函数时,i还是第一次那个变量,值已经变成了2,再一次调用函数时i就是3,依次类推。7、等差数列 2,5,8,11,14, ……A: (2)=(3) B: (1)=(2) C: 都不一样 D: 都一样。

2023-08-25 22:33:22 289 1

原创 C语言日常刷题 1

计算规则为:先判断表达式1是否为真,若为真,则计算表达式2,并将表达式2的结果作为整个表达式最终的结果,表达式3不计算;c选项中:假定M取0,则M表示假,当M是0时,表达式M!swap函数调用时用的是全局变量,主函数中定义的变量只在主函数中有效,因为主函数也是一个函数,它与其他函数是平行关系;&c和c两个地址值是一样的,程序的效果相同,也没错,但同时也必须把变量b的地址给scanf,故CD错误,AB正确。本题B选项考查转义字符,有如下格式,但八进制数字是0-7,没有8,故B选项中’\8’是错误的。

2023-08-24 22:58:23 1067 3

原创 C语言小白急救 指针进阶讲解1

由结果可以看出,我们三种对函数的调用的结果都是一样的,那么就说明,在函数调用中,是否在函数指针中使用 * 没有影响,都可以进行函数调用;pfun1先和*结合,说明pfun1是指针,指针指向的是一个函数,指向的函数无参数,返回值类型为void。3.指针是有类型的,指针的类型决定指针 ± 整数所访问空间的步长,以及指针解引用操作时的权限。指针数组是数组,是存放指针的数组(即存放在数组中的元素都是指针类型的)2.&数组名 这里的数组名表示整个数组的地址,取出的是数组的地址。1.指针就是个变量。

2023-08-23 21:38:17 163 4

原创 C语言小白急救 整型与浮点型在内存中的存储(理论知识+代码示例)

大端字节序是把数据的高字节内容存放到低地址,低字节内容存放在高地址处小端字节序是把数据的高字节内容存放到高地址,低字节内容存放在低地址处例1:小端字节序int main()return 0;VS编译器中默认使用小端字节排序例2:大端字节序int main()return 0;

2023-08-20 22:58:57 201 13

原创 C语言小白急救 基础调试技能(4千字教程)

在代码的编写过程中,调试是一个必不可少的环节,我们在运行代码时都需要进行调试,来检查代码是否能达到自己想要的效果,现在,我就向大家讲述一下如何进行调试。调试(英语:Debugging / Debug),又称除错,是发现和减少计算机程序或电子仪器设备中程序错误的一个过程。调试最基本的原则,代码是否按自己想的运行方式运行。Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。

2023-08-19 17:58:26 137 2

原创 C语言刷题 1

输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。自己设计函数模拟实现库函数strcpy。自己设计函数模拟实现库函数strlen。1.strcpy实现。2.strlen实现。3.调整奇数偶数顺序。

2023-08-18 22:41:21 120 1

原创 C语言小白急救 结构体初级讲解(两千字教程)

char b[10];int* c;struct B d;}a1;//结构体的全局变量//结构体的全局变量int main()//结构体的局部变量return 0;char* n;char b[10];char q;int* c;struct B d;}a1;//结构体的全局变量//结构体的全局变量int main()//按顺序初始化//指定成员初始化。

2023-08-17 15:44:26 98 11

原创 C语言小白急救 指针初级讲解(四千字教程)

(1)指针是内存中一个最小内存单元(字节)的一个编号,也就是地址(我们平常所用的二进制位就是其中的一种表现形式)(2)我们平常口语中所说的指针一般指的是指针变量,是用于存放地址的指针就是地址,我们平常口语中所说的指针其实是指针变量。

2023-08-16 16:22:15 291 9

原创 C语言小白急救 表达式求值(两千字教程)

表达式求值的顺序一部分是由操作符的优先级和结合性决定。此外,有些表达式的操作数在求值的过程中可能需要转换为其他类型。

2023-08-16 10:38:14 60 9

原创 C语言小白急救 操作符详解(8千字保姆级教程)

本次关于操作的教程以完,希望能对大家有所帮助。

2023-08-15 23:41:13 106 8

原创 C语言小白急救 操作符相关练习1

编程实现:两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列。& 相位与 两对应的二进制位两个都为1才为1,有一个是0就为0。^ 相位异或 两对应的补码二进制位相同为0,相异位1。^ 相位异或 两对应的二进制位相同为0,相异为1。公式:a ^ a = 0 a ^ 0 = a。写一个函数返回一个整数二进制中 1 的个数。不允许创建临时变量,交换两个整数的内容。解决思路与第二题的解法2类似。

2023-08-14 21:53:00 48 5

原创 怎样去除CSDN博客中图片、代码运行截图中的水印

我们在上传图片或者代码运行结果图片时,会自动为我们添加上自己的水印,我现在就为大家分享一下怎么把这个功能去掉。进入到自己的博客设置中,然后将图片水印这里关闭,注意记得保存(如果正在编辑文章,需要退出重进后才会生效)本次分享结束,希望对大家有帮助。

2023-08-14 11:11:27 378

原创 C语言小白急救 扫雷游戏(万字保姆级教程)

扫雷游戏是许多人初玩电脑是常玩的游戏,没完过的话也可以试着玩一玩,这样对于编写扫雷游戏会有一个很好的思路的;在编写的过程中我们既可以增强自己的代码编写能力,又可以引起自己的兴趣。扫雷程序的编写,我认为对于C语言小白来说是一个很大的挑战,但同时,在编写完成后我们对于如何编写一个较大的程序,也会有自己的思考,会成为以后编写的一块垫脚石同时也会提高自己的编程能力。

2023-08-13 22:06:04 96 8

原创 C语言小白教导 千字分享基础的代码编写思路(以乘法表为例)

作为开始学习C语言的小白,我们对于代码编写还处于一个比较陌生的阶段,所以,我们要学习一些基础的代码编写习惯以及怎样对代码进行编写。一、代码编写习惯在我们初学代码的时候,我们很多人都会习惯性的将所有代码放在一整个文件,但其实在代码编写过程中,尤其是需要较多代码的项目中,我们编写代码要进行分层处理,在功能的实现中,我们要一步步的实现功能,为了防止在最后完整程序的实现过程中出现许多bug,我们要尽量做到完成一个功能再进行下一个功能的编写,这样我们能快速找到出现bug的区域;

2023-08-12 22:33:02 89 3

空空如也

空空如也

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

TA关注的人

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