- 博客(34)
- 收藏
- 关注
原创 VS studio2019配置远程连接Ubuntu
(1)获取主机IP(2)获取Ubuntu的IP(3)在windows的控制台中ping虚拟机的ipv4地址,在Ubuntu中ping主机的ipv4地址。(4)在两边都ping通之后才能进行下面的操作。如果两个ip 不在同一个网段,则需要通过主机IP信息,去Ubuntu配置一条新的网段信息,并启用。
2024-06-27 17:12:59
902
原创 返回值返回引用返回指针之间的区别
(1)适用场景返回值:适用于基本数据类型或小对象 ,不需要考虑性能问题。或需要使用临时对象的场景。返回引用:适用于较大的对象 ,需要考虑性能问题的场景。返回指针:适用于动态分配内存或指针灵活指向的场景。(2)注意事项返回局部对象或局部变量时:局部变量和局部对象在使用后会被销毁 ,返回它们的引用会产生悬挂引用或悬挂指针。使用这些引用会产生未定义行为。内存管理: 对于函数内部手动分配的内存 ,在适当的时候需要进行销毁 ,以避免内存泄漏。不能返回指向已经被销毁的内存空间的指针。
2024-06-13 19:58:09
593
原创 C++构造函数-引用-对象创建
引用是一个别名,它为已存在的变量或对象提供了另一个名称。通过引用,可以使用原始变量或对象的名称来访问相同的内存空间。
2024-03-23 10:54:18
886
原创 类对象的初始化过程与方法
(1)对象在实例化的时候需要调用构造函数,如果对应的构造函数调用不了,这个对象是没有办法实例化的。(2)构造函数的执行,是在内存分配之后,在对象被完全实例化以前。
2024-03-22 20:11:44
673
原创 C/C++混合编译
这两个函数名看是经过了C++的名称修饰(name mangling),因为在C++中,函数重载会导致相同的函数名被修改以包含参数类型信息,以用来区分同名函数。**总的来说:**使用混合编程和动态链接库的方式能够充分发挥 C 和 C++ 语言的优势,提高项目的效率、可维护性和可扩展性,是现代软件开发中常见的实践之一。:使用动态链接库的方式可以实现 C 和 C++ 之间的互操作,因为动态链接库中的函数可以以 C 的方式进行链接,并且可以在 C++ 中调用。文件中包含了编译后的目标代码,其中包括了函数的实现。
2024-03-19 12:08:18
2656
原创 进程间通信方式--共享内存
(1)进程间通信方式之一,若干个进程可以共享一段内存,这段内存 称之为"共享内存"。(2)这种方式,会比其它 IPC 方式(fifo pipe messages)少一次 copy 内存,共享内存的效率会高很多。(3)共享内存在内核中创建,随内核持续性!
2024-03-15 10:55:00
933
原创 进程间通信方式--信号(signal)
(1)定义信号量(2)定义信号处理函数(3)注册信号(4)发送信号函数原型:参数:@signum: 要设置处理函数的信号编号@handler:指向处理函数的指针。可以是一个自定义的函数,也可以是系统提供的预定义处理函数。返回值:无返回值注意:(1)关于参数函数指针的参数:调用 signal() 函数将自定义信号 MY_SIGNAL 与信号处理函数 signal_handler 关联起来。
2024-03-14 15:16:04
1991
1
原创 exit() 和 wait() 函数的用法
函数用于终止当前进程的执行,并返回状态码给其父进程。函数用于父进程等待子进程的终止,并获取子进程的终止状态。
2024-03-14 11:40:19
562
原创 进程间通信-有名管道
②在收到 over 结束指令时,需要在break前输出一个换行,或者先关闭管道文件,在break。fifo 是在 pipe(无名管道) 的基础上,给 pipe 在文件系统中创建了一个 i-node(文件名)。但是 fifo 的文件内容仍然是保存在内核中。①fifo是有 i-node的,所以可以使用多个进程来读写文件!fifo 和 pipe 是一样的,区别就是 fifo 在文件系统中有一个名字。使用 fifo 需要操作 fifo 文件。也就是必须有一个管道文件。②fifo 文件内容随内核持续性。
2024-03-13 17:08:43
354
原创 进程间通信-管道通信-无名管道(pipe)
Linux中 inode 用于唯一标识一个文件,而无名管道(pipe)在系统中是没有名字的,也就是没有(inode),它的内容直接保存在操作系统的内核中。无名管道可以通过系统 API 提供的 IO 函数进行操作,但是不能使用 open/close 函数进行打开或者关闭。无名管道使用 read/write 进行读写,但是 使用 read/write 必须得有一个文件描述符。所以,使用无名管道 pipe 时,就必须先创建 文件描述符。
2024-03-13 16:02:51
430
原创 数据结构--(栈)总结
注:判空时需要先判断头节点是否存在,即:判断头节点是否为空,再判断是否有元素。注:元素入栈前,需要先判空,再判断栈是否已经满了,不能颠倒顺序,栈空时可能造成使用空指针的情况。都是 "越界" 的情况,不考虑。新的数据会覆盖老的数据,不会造成影响。注:代码使用的是带头节点的双向链表模型作为栈。在堆区创建的,需要手动释放,并且先与。已经被置空,造成空指针引用,引发段错误。注:栈是先进后出的线性结构,这里通过。会造成空指针的引用,引发段错误。,代码中,数组采用的是。类型的指针,指向一块通过。所以元素的个数需要在。
2024-01-25 20:22:50
838
原创 数据结构(链表)-总结
这篇文章以及代码都是在某培训机构学完数据结构之后,自己根据课程重新写了一点代码总结。文章和代码中如有谬误,敬请指出!1.简化定义语句,提高可读性在使用 typedef后,结构体变量的定义由原先的简化为,尤其在结构体名字较长时,可以使代码更为简洁,提高可读性。2.增强代码的可维护性和复用性通过使用 typedef定义数据类型的别名,代码在变更数据类型时变得更具灵活性。例如,若需将数据域的类型修改为 char,使用 typedef。
2024-01-22 13:14:10
969
1
原创 力扣 反转字符串 II
1.根据题目要求,每次需要反转前 K 个字符;2.结束时需要判断剩余字符个数是否大于 K 个,若大于 K 则反转前 K 个字符,若小于 K 则反转剩余的所有字符3.根据题目要求,我们需要不断地反转字符串,进行重复的操作,所以首先想到使用循环解决问题4.先进行一次字符串反转,再推到整个循环的开始结束条件.5.由于需要进行字符串反转,而且是在字符串内部进行反转,所以需要反转的位置,从哪里开始,从哪里结束。因此,使用到双指针的思想。
2024-01-08 19:40:46
837
原创 单链表的反转
3.使用头插法的思想,定义两个指针 pre 和 cur 用pre 指向新链表的第一个节点,用cur指向旧链表的第一个节点,将每次拿出来的节点插到第一个节点的位置。1.链表的反转需要将链表翻转过来,意思是:将最后一个节点作为首节点,将倒数第二个节点作为第二个节点,将倒数第三个节点作为第三个节点……2.思路:遍历链表,每遍历一个节点,就将这个节点拿出来,组成一个新链表。
2023-12-28 10:30:42
436
1
原创 C语言实现循环链表
循环链表是一种特殊形式的链表结构,其特点是将单链表的终端节点的指针端由空指针改为指向头节点,形成一个环形结构。循环链表的尾指针指向终端节点,而尾指针指向的下一个节点即为头节点。带头节点的循环链表包含一个额外的头节点,该头节点不存储实际数据。数据从头节点的下一个节点开始存储,尾指针指向终端节点,使整个链表形成一个环。不带头结点的循环链表直接从第一个节点开始存储数据,尾指针指向终端节点,形成一个闭合的环。尾指针指向的节点即为终端节点,可存放数据。
2023-12-27 14:53:05
1178
1
原创 C语言实现静态链表
定义数组元素都是由两个数据域组成的,data和cur。也就是说数组的每个下标都对应着一个data 和一个 cur。数据域 data ,用来存放数据元素,cur 相当于单链表中的 next 指针,用来存放后继元素的数组下标,我们将 cur 叫做游标。将这种用数组描述的链表叫静态链表,也叫游标实现法。游标:1、静态链表中,游标cur用于存放下一个元素在数组中的索引。它相当于单链表中的next指针,表示链表的下一个结点在数组中的位置。2、未被使用的数组元素通常被组成一个备用链表。
2023-12-26 10:32:25
954
1
原创 求两个数组的交集2
解题思路:1.统计数组中每个元素的值出现的次数,也就是每个元素出现了多少次2.遍历一个数组 nums2,找另一个数组nums1。3.如果当前被遍历到值 num 在nums1中存在,那么,去找 num 出现的次数。4.在遍历时,我们需要通过查找是否出现,即C++ 函数查找与键 k 关联的元素。如果操作成功,则方法返回指向元素的迭代器,否则返回指向 map::end() 的迭代器。
2023-12-23 11:17:32
414
1
原创 求两个数组的交集
思路:使用一个集合,将其中一个数组的元素存放到集合中,遍历另一个数组,利用集合 Unordered_set 的库函数 count 搜索当前遍历的数组元素,若这个数组元素在集合中存在,则把他插入到新的集合中。因为集合中的元素具有唯一性,所以重复的元素并不会被重复插入到集合。遍历结束,即可得到存放交集的集合,再将新集合的元素用数组保存,返回该数组即可。审题:求交集意味着要从两个无序数组中拿其中的相同的元素,集合中一个数可能出现多次,在返回的数组中,不需要相同的元素。2.建立新集合,保存交集。
2023-12-23 09:58:34
450
1
原创 给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一
设置一个标志变量 flag 代表是否需要进位,若需要进位,若需要进位,则先判断当前元素是否需要进位,若当前元素为 9 需要进位,则将当前元素置为 0 ,并将flag 设置为 true,表示下一位也需要进位。(2)例如 999,此时,在数组中,不仅要使各个位置进位,而且还需要扩展数组,在数组的第 0 位插入一个1;(1)例如 19 ,19 只需要进一位,在数组中只需要将 9 置0,将 1 加上进位的 1,改成 20 即可。(1)判空,若数组长度为空,则直接向数组中插入一个 1 ,返回数组即可;
2023-12-21 10:56:08
945
原创 给定一个数组,移除数组中值为val的元素,并返回移除后数组的新长度
思路:将数组中值不为 val 的数组元素放到数组的前面,设置一个计数器,若找到一个不为 val 的值,则计数器 +1 ,遍历结束,返回计数器的值。通过计数器的值访问数组元素。1.建立两个 int 类型的值 i = 0,j = 0。i 用做计数器以及存放新值的索引,j 用来遍历数组;2.比较 nums[j]!= val 是否不等,如果不等,则将不等于 val 的元素放到索引为 i 的位置。并将 i 的值自增1。也意味着:如果找到了下一个元素的值,则下一个元素将会放到第 i+1的位置,而不会覆盖之前的元素。
2023-12-20 20:24:34
355
1
原创 删除排序链表中的重复元素
1.建立两个指针,一个指向当前节点,一个指向下一个节点;3.若有重复的值,将重复的值所对应的节点丢掉;4.若没有重复的值,则指针后移。2.比较两个指针指向的值;
2023-12-17 22:01:43
394
1
原创 假设环境不允许存储 64 位整数(有符号或无符号),将一个 32 位的有符号整数 x反转。解决溢出问题。
给你一个 32 位的有符号整数x,返回将x中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围,就返回 0。
2023-12-16 09:28:51
430
原创 QT动态创建单项选择
(3)因为是用来for()循环创建的QRadioButton按钮,在创建完之后无法访问其中的某一个QRadioButton按钮。(1)使用for()循环并且通过questions.size()函数就可以遍历到所有的题目,使用questions[i].questionanswerlist.size()可以访问到某个题目的所有选项的内容。(2)创建QRadioButton单选按钮时,使用QButtonGroup将一个题目的所有选项对应的单选按钮放入一个组中,保证了每一个问题的选项都是互斥的。
2023-09-19 20:43:43
219
原创 C++连接MySQL数据库实现对一个简单的学生信息系统的增删改查
(6)回到VS,继续打开解决方案的属性页——找到链接器——进入输入——附加依赖项——将libmysql.lib添加到依赖项中(末尾加上分号";(2)打开项目——右键解决方案——点击属性——点击VC++目录——将mysql.h文件路径添加到包含目录中去;(记得在路径末尾加上分号:";(3)在刚刚找到的mysql.h目录的上一级目录中,找到lib目录,进入lib目录,复制路径。中添加lib文件路径(同样在路径末尾加上分号";(1)在MySQL安装路径中找到。(5)进入lib目录,找到。这个文件,复制文件路径;
2023-05-24 13:09:26
1820
3
原创 C++猜数字游戏
3.断用户猜测的数字是否与答案相同,如果不同则给出相应的提示信息,如“猜大了”、“猜小了”等。5.可以设置猜测次数上限,超过上限未猜中则游戏失败。4.循环进行猜测和提示,直到用户猜中为止。1.生成一个随机数作为答案。2.要求用户输入猜测的数字。
2023-05-20 18:20:41
1181
1
空空如也
C++通过HICON获取argb像素数组
2024-11-15
TA创建的收藏夹 TA关注的收藏夹
TA关注的人