自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 sqlite3数据库

sqlite3简单指令操作

2025-03-29 22:54:07 125

原创 C++面向对象三大特性

Circle和Rectangle类继承了Shape类的area属性和getArea方法,并且分别重写了calculateArea方法来实现各自的面积计算逻辑。封装是将数据和操作数据的函数捆绑在一起形成类,通过访问控制限定符(如private、protected、public)隐藏对象的内部细节,仅对外提供必要接口,以此增强代码的安全性和可维护性。在 C++ 中,多态主要通过虚函数和继承来实现,这可以提高代码的灵活性和可扩展性,使程序能根据实际对象类型调用相应方法。

2025-03-16 00:25:53 483

原创 C快速排序

快速排序的基本思想是通过选择一个基准元素(pivot),将数组分为两部分,使得左边部分的元素都小于等于基准元素,右边部分的元素都大于等于基准元素,然后递归地对左右两部分进行排序。当 left 和 right 指针相遇时,将基准元素 pivot 放置到 left 位置,此时基准元素左边的元素都小于等于它,右边的元素都大于等于它。选择数组的第一个元素 a[left] 作为基准元素 pivot,并初始化左右指针 left 和 right 分别指向当前排序范围的起始和结束位置。int *a:指向待排序数组的指针。

2025-03-15 11:44:18 297

原创 C二分查找

该函数实现了二分查找算法,用于在已排序的整数数组中查找目标值 t 的索引位置。如果 t < a[mid],说明目标值在中间元素的左侧,更新右边界 right = mid - 1,缩小查找范围到左半部分。如果 t > a[mid],说明目标值在中间元素的右侧,更新左边界 left = mid + 1,缩小查找范围到右半部分。循环条件:while (left <= right) 表示只要查找范围的左边界不超过右边界,就继续进行查找。如果 t == a[mid],说明找到了目标值,直接返回中间索引 mid。

2025-03-15 10:06:44 282

原创 数据结构——简单冒泡排序

每一轮中,比较的范围会逐渐缩小,因为每一轮结束后,当前未排序部分的最大元素已经被放到了正确的位置,所以下一轮就不需要再对这些已经排好序的元素进行比较了。冒泡排序的基本思想是多次遍历数组,比较相邻元素的大小,如果顺序错误就把它们交换过来,每一轮遍历都会将当前未排序部分的最大元素 “冒泡” 到数组的末尾。通过临时变量 temp 来实现元素的交换,将 a[j] 的值赋给 temp,然后将 a[j + 1] 的值赋给 a[j],最后将 temp 的值(即原来 a[j] 的值)赋给 a[j + 1]。

2025-03-15 09:33:46 213

原创 C语言爱心代码

定义三个浮点型变量,x 和 y 用于表示二维平面上点的坐标,a 作为中间计算变量辅助判断。

2025-03-11 11:15:22 348

原创 C语言——第一章:数据结构基础

1

2025-03-03 20:27:18 357

原创 探索Qt中控件布局管理

在Qt中,控件布局管理是构建用户界面的核心组成部分之一。Qt提供了多种布局管理器,帮助开发者轻松地管理控件的排列和尺寸,从而使得应用界面更加简洁、灵活。本文通过一个简单的示例,来展示如何使用Qt的布局管理器进行控件布局。

2025-01-14 11:40:18 493

原创 C++异常处理的理解与实践示例

异常处理是C++中的一个重要特性,它允许程序员优雅地处理运行时错误。通过使用异常,我们可以将错误处理代码与主逻辑分离,使程序更清晰、更健壮且更易于维护。本文通过一个实际的示例来讲解异常处理的相关概念。代码示例#include <stdexcept> // 用于标准异常​​throw invalid_argument("数组地址为空");throw invalid_argument("N的范围应为0 <= n <= size!");​i < j;i++, j--)​。

2025-01-12 20:30:43 416

原创 基于STM32的智能温室大棚

智能温室大棚控制系统以STM32微控制器为核心,结合多种传感器(如温湿度传感器、土壤湿度传感器、光照强度传感器),实现对温室大棚内环境的监测和控制。

2025-01-05 18:01:31 2097

原创 C++ 非类型模板参数:深入理解与应用

非类型模板参数,顾名思义,是在模板中传递的不是类型,而是常量值。类型模板参数:例如,。非类型模板参数:例如,,其中N是一个整数常量。整数常量:如int或size_t。指针常量:如常量指针、数组指针。引用常量:如常量引用。枚举常量:如枚举类型的常量值。非类型模板参数是 C++ 模板的一项强大特性,它允许我们在编译时为模板传递常量值,从而控制模板的行为。通过使用非类型模板参数,我们可以实现:固定大小的数组或矩阵。编译时常量的计算。更高效的内存使用和性能优化。

2024-12-26 10:16:12 700

原创 C++模板详解与使用案例

在C++中,模板(Template)是实现泛型编程的核心工具,它允许编写代码时不必具体指定数据类型,从而实现代码的高复用性和灵活性。本文将通过代码示例,详细讲解模板的用法及其背后的机制。C++模板是实现泛型编程的强大工具,可以极大提高代码的灵活性和复用性。在简单应用中,函数模板即可满足大部分需求,而类模板和模板特化则提供了更深层次的扩展能力。虽然模板带来了诸多好处,但需要注意类型推导和代码膨胀的问题,在实际开发中合理使用。

2024-12-25 10:41:09 599

原创 C++函数重载

它接受一个整数sec作为参数,创建一个临时的Timer对象tem,将this指针所指向的Timer对象的sec成员和传入的整数sec相加,最后返回这个临时的Timer对象。它接受一个Timer对象的引用作为参数,在函数内部创建一个临时的Timer对象tem,然后将两个Timer对象的min和sec成员分别相加,最后返回这个临时的Timer对象。在C++中,函数重载是指在同一个作用域内,可以定义多个同名函数,只要这些函数的参数列表不同(参数个数、参数类型或者参数顺序不同)即可。

2024-12-24 12:56:23 283

原创 IO多路复用--select

8.1如果是监听套接字:就应该建立新的连接并且将新的文件描述加入备份集合。8.2如果不是监听套接字就一定是通信套接字:数据传输。6、阻塞检测是否有关心的文件描述符准备就绪:select。7、循环遍历检测就绪的文件描述符:FD_ISSET。1、创建集合:fd_set rfds, bfds;3、将关心的文件描述符添加到集合:FD_SET。8、判断就绪的文件描述符类型。5、将备份集合赋值给操作集合。2、清空集合:FD_ZERO。

2024-12-23 09:31:51 293

原创 网络编程---组播

网络编程中的组播是一种高效的点对多点通信方式,它允许一个节点向一组特定的节点发送数据。相比于广播,组播更加灵活和高效,因为它只向需要接收数据的节点发送数据,避免了不必要的网络流量。

2024-12-16 10:13:16 371

原创 网络编程--广播

在IPv4中,广播地址通常是一个网络上的最后一个地址,例如在192.168.0.0/24网络中,广播地址是192.168.0.255。任何发送到此地址的数据包将被网络上的所有设备接收12。这减少了不必要的数据流量,因为只有感兴趣的接收者才会接收消息。设置SO_BROADCAST选项:通过设置SO_BROADCAST套接字选项来允许发送广播数据。由于所有设备都必须处理每个广播消息,因此在大型网络上可能会导致网络拥堵。对于不接收广播信息的主机,广播信息会造成一定的负担。广播:消息被发送到网络上的所有设备。

2024-12-16 09:59:28 385

原创 udp通信编程

udp协议属于传输层协议udp:无连接、不保证数据准确、顺序、可达。udp套接字对应的宏:SOCK_DGRAMudp套接字没有发送缓冲区只有接收缓冲区。

2024-12-11 09:30:42 651

原创 stm32入门—F103

STM32F103是STMicroelectronics公司推出的一款基于ARM Cortex-M3内核的32位微控制器。由于其高性能、低功耗、丰富的外设接口和易于开发等特点,在嵌入式系统领域得到了广泛的应用。本文将带你了解STM32F103的基本概念、开发工具以及如何开始你的第一个STM32F103项目。

2024-11-17 21:25:25 734

空空如也

空空如也

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

TA关注的人

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