- 博客(54)
- 收藏
- 关注
原创 【c++】拷贝构造和赋值运算符重载
则此构造函数也叫做拷贝构造函数,也就是说。直接的拷贝赋值,这里要注意跟拷贝构造区分,未来很长,值得我们全力奔赴更美好的生活✨。赋值运算符重载是一个。
2024-07-21 11:41:51
1018
6
原创 【C++】构造函数和析构函数
内置类型:构造函数:通常不需要编写,因为编译器提供的默认构造函数足以处理内置类型。析构函数:不需要编写,因为内置类型不需要特定的清理操作。拷贝构造函数:不需要编写,因为内置类型的默认拷贝行为(浅拷贝)是正确的。自定义类型:构造函数:可能需要编写,尤其是当对象需要特定的初始化逻辑时。析构函数:可能需要编写,如果对象在生命周期结束时需要进行资源释放或清理操作。拷贝构造函数:可能需要编写,尤其是当类包含指针成员或需要深拷贝时。
2024-07-19 09:39:30
705
2
原创 C++入门基础
定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员,花括号外面没有分号。命名空间中可以定义变量/函数/类型等。namespace本质是定义出一个域,这个域跟全局域各自独立,不同的域可以定义同名变量,所以下面的rand不在冲突了。C++中域有函数局部域,全局域,命名空间域,类域;域影响的是编译时语法查找一个变量/函数/类型出处(声明或定义)的逻辑,所有有了域隔离,名字冲突就解决了。
2024-07-19 09:31:51
796
原创 ONLYOFFICE8.1版本桌面编辑器测评
总体来说,ONLYOFFICE以其卓越的兼容性、实时协作、跨平台能力及强大的安全特性,在办公软件市场中独具优势。随着8.1版本的更新,其界面设计、编辑功能、协作体验和安全性得到进一步提升。展望未来,我们相信它将不断满足用户需求,巩固其作为一站式办公解决方案的地位。
2024-07-08 11:09:46
645
11
原创 【ONLYOFFICE8.1桌面编辑器】强势来袭—— 一款全面的办公软件套件
ONLYOFFICE以其卓越的兼容性、实时协作、跨平台能力及强大的安全特性,在办公软件市场中独具优势。随着8.1版本的更新,其界面设计、编辑功能、协作体验和安全性得到进一步提升。展望未来,我们相信它将不断满足用户需求,巩固其作为一站式办公解决方案的地位。
2024-06-25 19:46:01
1302
4
原创 【数据结构】单链表
概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表的结构跟火车车厢相似,淡季时车次的车厢会相应减少,旺季时车次的车厢会额外增加几节。只需要将火车里的某节车厢去掉/加上,不会影响其他车厢,每节车厢都是独立存在的。车厢是独立存在的,且每节车厢都有车门。想象⼀下这样的场景,假设每节车厢的车门都是锁上的状态,需要不同的钥匙才能解锁,每次只能携带⼀把钥匙的情况下如何从车头走到车尾?最简单的做法:每节车厢里都放一把下一节车厢的钥匙。
2024-05-10 19:19:41
674
71
原创 【oj题】环形链表
因此,在慢指针走到一圈之前, 快指针肯定是可以追上慢指针的,即相遇。即慢指针一次走一步,快指针一次走两步,两个指针从链表起始位置开始运行,如果链表带环则一定会在环中相遇,否则快指针率先走到链表的末尾。当慢指针刚进环时,可能就和快指针相遇了,最差情况下两个指针之间的距离刚好就是环的长度-1。head指针走L步,meet指针走C-N步,head指针和meet指针相遇,此时就是环的第一个节点。假设链表带环,两个指针最后都会进入环,快指针先进环,慢指针后进环。假设快指针一次走3步,慢指针一次走1步。
2024-05-10 09:37:38
381
12
原创 编译和链接
我们在 test.c 文件中每一次使用 Add 函数和 g_val 的时候必须确切的知道 Add 和 g_val 的地 址,但是由于每个文件是单独编译的,在编译器。将源代码程序被输入扫描器,扫描器的任务就是简单的进行词法分析,把代码中的字符分割成一系列 的记号(关键字、标识符、字面量、特殊字符等)。在 gcc 环境下想观察⼀下,对 test.c 文件预处理后的.i文件,命令如下: 1 gcc -E test.c -o test.i。,所以暂时把调用 Add 的指令的目标地址和 g_val 的地址。
2024-03-31 20:27:07
1436
22
原创 fread和fwirte函数
返回值:如果成功,读取的总字节数为 (size*count),返回。fwrite和fread的理解差不多,这里就不多做阐述啦!参数不同,则表示读取时发生读取错误或到达。在这两种情况下,可以分别使用。从流(二进制文件)中读取数据块。为size,并将它们存储在。size 或 count。个元素的数组,每个元素的。指向的流状态和内容保持。
2024-03-31 19:08:49
883
2
原创 文件的顺序读写——顺序读写函数——fgets、fgetc、fputs、 fputc
一、fgetc和fputc函数一、fgetc和fputc函数1.1 fputc返回类型int:如果成功读取字符,返回的是字符的ASCII码值——char如果读取失败或者遇文件末尾,则返回EOF(-1) ——int为了统一,将函数的返回类型定为int(char类型提升为int类型)
2024-03-30 23:54:06
2140
7
原创 文件的打开和关闭
我们程序的数据需要输出到各种外部设备,也需要从外部设备获取数据,不同的外部设备的输入输出操作各不相同,为了方便程序员对各种设备进行方便的操作,我们抽象出了流的概念,我们可以把流想象成流淌着字符的河。C程序针对文件、画面、键盘等的数据输入输出操作都是通过流操作的。一般情况下,我们要想向流里写数据,或者从流中读取数据,都是要打开流,然后操作。
2024-03-30 20:36:53
440
3
原创 【三种方法】求一个整数存储在内存中二进制中的1的个数附两道课外练习题
数据在内存中以补码形式存储。题目要求我们求一个数在内存中二进制中1的个数,从这里可以想到,我们需要定义一个变量count来计数,再得到二进制的每一位,并且再判断它是否为1,这道题就差不多解决了。但问题就是如何得到二进制的每一位?我们知道二进制的每一位要么是0要么是1,因此求二进制中1的个数,只需%2,看得到的余数是不是1,如果是1,count++,之后/2使得这个二进制去掉最后一位,如此循环往复,直到该数字为0,count的值就是1的个数。课外练习:用位运算判断一个数是否是2的次方数;二进制位置0或者置1
2024-03-23 08:51:05
778
1
原创 结构体内存对齐
1.结构体的第一个成员对齐到和结构体变量起始位置的地址处2.其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处。对齐数= 编译器默认的一个对齐数与该成员变量大小的。VS 中默认的值为 8Linux中 gcc 没有默认对齐数,对齐数就是成员自身的大小3.为最大对齐数(结构体中每个成员变量都有一个对齐数,所有对齐数中最大的)的 整数倍。4. 如果嵌套了结构体的情况,嵌套的结构体成员对齐到的整数倍处,结构体的整体大小就是所有最大对齐数(含嵌套结构体中成员的对齐数)的整数倍。
2024-03-23 08:49:53
505
原创 浮点数在内存中的存储
常见的浮点数:3.14159、1E10等,浮点数家族包括: float、double、long double 类型。浮点数表示的范围: float.h 中定义根据国际标准IEEE(电气和电子工程协会)754,任意一个二进制浮点数V可以表示成下面的形式:• M表示符号位,当S=0,V为正数;当S=1,V为负数(−1)• S表是有效数字,M是大于等于1,小于2的• E表示指数位举例来说:十进制的5.0,写成二进制是 101.0 ,相当于 1.01×2^2。
2024-03-18 08:31:57
1268
2
原创 数据在内存中的存储之整数存储
整数的2进制表示方法有三种,即原码、反码和补码三种表示方法均有和两部分,符号位都是0表用示“正”,用1表示“负”,而最高的一位是被当做符号位,剩余的都是数值位。原码:直接将数值按照正负数的形式翻译成二进制得到的就是原码。反码:将原码的符号位不变,其他位依次按位取反就可以得到反码。补码:反码+1就得到补码。对于整形来说:数据存放内存中其实存放的是补码。为什么呢?在计算机系统中,。原因在于,使用补码,可以将符号位和数值域统⼀处理;
2024-03-18 07:42:45
803
2
原创 【C语言】strcpy与strncpy函数的使用和模拟实现
• 源字符串必须以 '\0' 结束。• 会将源字符串中的 '\0' 拷贝到目标空间。• 目标空间必须足够大,以确保能存放源字符串。• 目标空间必须可修改。strcpy 不检查目标缓冲区的大小,因此如果目标缓冲区不够大,可能会导致缓冲区溢出,这是一个严重的安全风险。建议使用 strncpy并指定最大复制长度,以避免这种风险。
2024-03-17 11:25:12
385
2
原创 【C语言】字符分类函数与字符转换函数
C语言中有⼀系列的函数是专门做字符分类的,也就是⼀个字符是属于什么类型的字符的。这些函数的使用都需要包含⼀个头文件是ctype.h这些函数的使用方法非常类似,我们就讲解⼀个函数的事情:islower 是能够判断参数部分的 c 是否是小写字母的。通过返回值来说明是否是小写字母,如果是小写字母就返回非0的整数,如果不是小写字母,则返回0。
2024-03-17 10:44:43
469
1
原创 【C语言】如何规避野指针
对于指针也是,在使用之前,我们也要判断是否为NULL,看看是不是被拴起来起来的野狗,如果是,不能直接使用;如果不是,我们再去使用。我们可以把野指针想象成野狗,野狗放任不管是非常危险的,所以我们可以找⼀棵树把野狗拴起来,就相对安全了,给指针变量及时赋值为NULL,其实就类似把野狗栓前来,就是把野指针暂时管理起来。NULL 是C语言中定义的⼀个标识符常量,值是0,0也是地址,这个地址是无法使用的,读写该地址会报错。如果明确知道指针指向哪里就直接赋值地址,如果不知道指针应该指向哪里,可以给指针赋值NULL.
2024-03-12 22:34:57
635
原创 【C语言】初步解决指针疑惑
计算机CPU(中央处理器)在处理数据的时候,需要的数据是在内存中读取的,处理后的数据也会放回内存中。简记为:8bit —> 8 二进制 —> 1字节 —> 2个十六进制,有了该编号,CPU就可以快速找到一个内存空间。该编号也叫做地址,C语言给。
2024-03-12 22:33:41
744
原创 操作符的属性:优先级、结合性(缺表达式求值)
C语言的操作符有2个重要的属性:优先级、结合性,这两个属性决定了表达式求值的计算顺序。我们先简单了解一下操作符的优先级和结合性,附上表格,简单记一下顺序,搭配几道题来加深印象。
2024-02-23 19:11:14
1264
原创 【原码、反码、补码】小白看完都呲大牙
所以,在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值位统一处理;同时,加法和减法也可以统⼀处理(CPU只有加法器)此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。写作不易,您的支持给与我莫大的鼓励!!!
2024-02-22 10:04:42
1926
原创 【表达式求值】整型提升和算术转换
即使有了操作符的优先级和结合性,我们写出的表达式依然有可能不能通过操作符的属性确定唯一的计算路径,那这个表达式就是存在潜在风险的,建议不要写出特别复杂的表达式。只有一点小小归纳,希望能帮到大家!!!!
2024-02-21 21:08:12
1219
原创 【C语言】初步认识结构体
/代码1:变量的定义int x;int y;//x,y是成员变量}p1;//声明类型的同时定义变量p1//定义结构体变量p2//代码2:初始化。struct Stu //类型声明//名字int age;//年龄//初始化//指定顺序初始化//代码3int data;//结构体嵌套初始化//结构体嵌套初始化。
2024-02-20 13:55:34
559
原创 二进制和进制转换
非十进制转十进制:权重之和十进制转二进制:短除法二进制转八进制: 从2进制序列中右边低位开始向左每3个2进制位会换算一个8进制位,剩余不够3个2进制位的直接换算。二进制转十六进制:从2进制序列中右边低位开始向左每4个2进制位会换算一个16进制位,剩余不够4个二进制位的直接换算。
2024-02-17 14:32:13
1042
原创 函数递归与迭代附n的阶乘+顺序打印一个整数的每一位数+求第n个斐波那契数
当 n==0 的时候,n的阶乘是1,其余n的阶乘都是可以通过公式计算。n的阶乘的递归公式如下:
2024-02-16 22:33:27
1414
1
原创 分数1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 求和
从要求,我们可以看出,计算内容分为正数和负数。对他们求和,可以通过分别求和再相加。计算1/1-1/2+1/3-1/4+1/5 ……+ 1/99 - 1/100 的值,打印出结果。也可以通过flag,来决定分数的正负。
2024-01-15 09:40:46
666
原创 【牛客网】BC68 X形图案
放入二维数组里,更易观察规律。将行设为i,列设为j,输入整数5。当i=j或者i+j=5-1时,打印‘*’;当不满足上述条件时,打印空格。多组输入,一个整数(2~20),表示输出的行数,也表示组成“X”的反斜线和正斜线的长度。从示例图可以看出x形图案可以分为两条线,这样我们就可以从这两条线入手。针对每行输入,输出用“*”组成的X形图案。
2024-01-10 14:23:13
688
原创 辗转相除法求最大公约数
辗转相除法(又称欧几里德算法)是一种求最大公约数的算法。它基于这样一个事实:两个数的最大公约数等于较大数和较小数余数的最大公约数。即两个数相除,再将除数和余数反复相除,当余数为0时,取当前算式的除数作为最大公约数。如:求18和24的最大公约数//用较小数作除数24/18=1余618/6=3余0所以最大公约数是6//用较大数作除数18/24=0余1824/18=1余618/6=3余0所以最大公约数是6。
2024-01-07 13:33:02
618
1
原创 数一下 1到 100 的所有整数中出现多少个数字9并输出这些数字
而这里99首先满足 i % 10 == 9 的判断条件,所以执行完相应语句后,就到for循环的调整语句(i++),没有进入else语句。从运行结果看出,99少算了一次,对比前一个代码,发现差别仅有分支结构(if-if、if-else if)。从这里可以看出,99是算了两次的,所以数字9的出现次数是20。思考, 1234想到得到4、12和123如何实现?1234 / 100 //得到12。1234 / 10 //得到123。1234 % 10 //得到4。
2024-01-06 09:00:00
527
1
原创 嵌套调用和链式访问
嵌套调⽤就是函数之间的互相调⽤,每个函数就是⼀个乐⾼零件,正是因为多个乐⾼的零件互相⽆缝的配合才能搭建出精美的乐⾼玩具,也正是因为函数之间有效的互相调⽤,最后写出来了相对⼤型的程序。假设我们计算某年某⽉有多少天?这⼀段代码,完成了⼀个独⽴的功能。代码中反应了不少的函数调⽤:• main 函数调⽤ scanf 、 printf 、 get_days_of_month• get_days_of_month 函数调⽤ is_leap_year稍微⼤⼀些代码都是函数之间的嵌套调⽤,但是。
2024-01-05 12:18:48
963
1
原创 static和extern详解
static修饰局部变量:生命周期就和程序的生命周期一样,只有程序结束,变量才销毁,内存才回收。但是作用域不变。static修饰全局变量:一个全局变量被static修饰,使得这个全局变量只能在本源文件内使用,不能在其他源文件内使用。⼀个函数在整个工程都可以使用,被static修饰后,只能在本文件内部使用,其他文件无法正常的链接使用了。期待。
2024-01-04 10:31:56
4637
3
原创 猜数字游戏
1. 电脑自动生成1~100的随机数2. 玩家猜数字,猜数字的过程中,根据猜测数据的大小给出大了或小了的反馈,直到猜对,游戏结束。
2024-01-03 12:12:03
936
1
原创 打印9*9乘法口诀
1.设计函数原型,不需要返回值,参数n表示乘法口诀表总共有多少行2.设定两个循环外层循环控制总共有多少行内层循环控制每行有多少个表达式以及表达式中的内容i
2024-01-01 15:39:13
829
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人