- 博客(736)
- 资源 (2)
- 收藏
- 关注

原创 C++之指针探究(三):指针数组和数组指针
前文:C++之指针探究(二):一级指针和一维数组一. 指针数组或:指针数组的本质是数组,数组中每一个成员是一个指针。定义形式如下: char∗\ast∗ pArray[10];语法解析:pArray 先与“[ ]”结合,构成一个数组的定义,char∗\ast∗修饰的是数组的内容,即数组的每个元素。例4:运行结果:附例4代码//小问学编程#include <iostream>using namespace std;int main(){ char* pArr
2020-12-26 18:55:14
271
原创 ROS2笔记之ament_cmake类型功能包和ament_python类型功能包的区别
类型功能包适用于C++和C语言,使用CMake构建系统。类型功能包适用于Python语言,使用setuptools构建系统。
2025-04-01 05:19:48
306
原创 ROS2笔记之服务通信和基于参数的服务通信区别
服务通信用于同步的请求-响应交互,客户端发送请求,服务端处理后返回响应,适合需要即时反馈的操作。例如,触发一个动作、获取传感器结果等。参数通信用于配置和动态更新节点的内部状态,不存在请求-响应的交互。参数的更新通常通过外部工具(如)或者节点内部更新来完成,适合调节节点行为、控制阈值等场景。
2025-04-01 04:55:12
954
原创 VMware笔记之windows的vmware17pro中的ubuntu22.04调整系统空间大小
这样,就成功调整了VMware中Ubuntu 22.04系统的空间大小。在VMware Workstation Pro主界面,右键点击虚拟机,选择"设置"。在VMware中调整Ubuntu 22.04虚拟机的系统空间大小是完全可行的。在硬件选项卡下,选择要扩展的硬盘,点击"扩展"。输入要增加的容量大小,点击"扩展"即可。右键点击根分区,选择"调整大小/移动"。会看到空间已经增加了,但是实际可用空间没变,需要继续调整分区。点击工具栏上的"应用所有操作"按钮,开始调整分区的过程。检查,可用空间已经增加了。
2025-03-29 01:00:47
419
原创 Linux笔记之Ubuntu22.04安装IBus中文输入法教程
如果在 VS Code 中无法使用拼音输入中文,但在其他应用(如文件浏览器的文本编辑器)中可以使用,可能是由于 VS Code 和输入法框架(Fcitx 或 IBus)之间的兼容性问题导致的。本文将介绍如何在 Ubuntu 22.04 系统中安装中文输入法,使用 IBus 输入法框架和拼音插件。如果无法通过快捷键切换输入法,可能是快捷键与其他应用程序冲突。重启系统后,测试 VS Code 是否可以输入中文。或其他中文区域设置。作为默认的输入法框架。保存更改并退出配置窗口。
2025-03-20 23:43:52
1191
原创 vscode使用Remote-SSH插件连接Linux远程服务器遇到问题:Could not establish connection to “xxx.xxx.xxx.xxx“:XHR faild解决
先检查windows的配置文件,一般是C:\User\username.ssh\config文件,正确内容类似。
2025-03-11 12:24:23
450
原创 qt-C++笔记之ubuntu22.04源码安装Qt6.8.2
Ubuntu 18.04 上安装 glibc 2.28 支持 QT6:https://xujinzh.github.io/2024/01/05/ubuntu-18-04-install-glibc2-28/index.html。安装参考链接:https://www.ics.com/blog/how-build-qt-640-source-ubuntu-linux。完成以上步骤后,Qt Creator 就已关联了新安装的 Qt6 环境,可以正常编译和调试基于 Qt6 开发的应用程序。在打开的对话框中点击。
2025-03-04 23:53:42
878
原创 qt-C++笔记之QToolButton和QPushButton的区别
【代码】qt-C++笔记之QToolButton和QPushButton的区别。
2025-03-02 23:33:57
404
原创 qt-C++笔记之Linux下Qt环境变量设置及与QtCreator的关系
如果没有将 Qt 的工具路径(如 /home/username/Qt/6.7.3/gcc_64/bin)添加到 PATH 中,终端将无法直接找到 Qt 工具(如 qmake、lupdate),除非它们安装在默认的系统路径中(通常不会发生)。如果没有设置 Qt 的库路径(如 /home/username/Qt/6.7.3/gcc_64/lib),运行依赖 Qt 的程序时,系统会在默认路径中查找库文件。/home/username/Qt/6.7.3/gcc_64/qml 是 QML 模块所在的目录。
2025-03-01 21:25:17
1007
原创 leetcode-442.数组中重复的数据
给你一个长度为 n 的整数数组 nums ,其中 nums 的所有整数都在范围 [1, n] 内,且每个整数出现 最多两次。请你找出所有出现 两次 的整数,并以数组形式返回。你必须设计并实现一个时间复杂度为 O(n) 且仅使用常量额外空间(不包括存储输出所需的空间)的算法解决此问题。442.数组中重复的数据。
2025-02-28 23:10:37
289
原创 qt-C++笔记之QtCreator新建项目即Create Project所提供模板的逐个尝试
code review!环境:ubuntu22.04 Qt6 6.7.3
2025-02-27 00:12:57
476
原创 qt-C++笔记之创建和初始化 `QGraphicsScene` 和 `QGraphicsView` 并关联视图和场景的方法
方式场景分配视图分配内存管理适用场景1. 栈分配场景和视图栈栈自动管理简单、短生命周期的场景2. 堆分配场景和视图堆堆手动管理长期存在、复杂的场景3. 堆分配场景 + 栈分配视图堆栈部分手动管理临时视图,长期存在的场景4. 堆分配并利用父子关系管理堆堆父子关系自动管理复杂项目,长期存在的视图和场景5. 使用 Qt Designer 通过 UI 文件创建可选(堆)可选(堆)父子关系自动管理使用 Qt Designer 的项目。
2025-02-21 23:03:58
1204
原创 C++笔记之标准库中的std::copy 和 std::assign 作用于 std::vector
特性std::copy是否调整目标容器大小不会调整,需要目标容器有足够的空间会自动调整目标容器大小是否是专属否,可以作用于任何支持迭代的范围是的成员函数内存重新分配不会重新分配内存会重新分配内存性能高效,但需要目标容器大小已知会有额外的内存分配开销使用场景当目标容器大小已知并且已经分配好空间时使用当需要完全替换目标容器内容时使用总结建议如果目标容器的大小已经确定,并且不需要调整大小,使用std::copy。如果需要完全替换目标容器的内容,并让其大小自动调整,使用。支持assign它们是。
2025-02-19 21:07:19
365
原创 C++笔记之标准库中用于处理迭代器的`std::advance`和`std::distance`
是一个灵活的工具,用于在不同类型的迭代器上移动指定的距离。当不确定迭代器的类型或希望代码更具通用性时,是一个很好的选择。是一个非常有用的工具函数,可用来快速计算两个迭代器之间的距离。它可以根据迭代器的类型(输入迭代器或随机访问迭代器)自动选择最优的计算方式,从而兼顾灵活性和效率。
2025-02-18 23:02:34
119
原创 C++笔记之类型大小、变量大小,vector与string在栈上内存、堆上内存和总内存的关系
堆上分配的内存由决定。元数据部分的大小是固定的,与元素个数无关。的容量(capacity)可能大于实际存储的元素个数(sizecapacity通常按倍数增长,堆内存可能比实际需要的多。使用测试元数据大小。使用和计算堆内存大小。总内存 = 元数据大小 + 堆内存大小。float的大小通常是固定的(4 字节),但的总内存占用还包括元数据和动态分配的堆内存。的内存占用确实和元素个数直接相关,但也受容量扩展机制的影响。在 C++ 中,sizeof。
2025-02-16 23:57:01
151
原创 qt-C++笔记之QGraphicsScene和 QGraphicsView中setScene、通过scene得到view、通过view得scene
1.2.3.在 Qt 的图形视图框架中,scene()->add…开头的方法用于在场景中动态添加图形项或其他内容,而 scene()->removeItem 用于从场景中移除指定的图形项。在 QGraphicsItem 的 mousePressEvent(QMouseEvent *event) 方法中,可以通过 scene() 获取当前图形项所属的场景,使用这些方法来操作场景中的内容。
2025-02-16 00:02:59
1033
原创 qt-Quick笔记之Dark Mode And Light Mode In Application
本例修改自视频教程:Qt QML | 🌙 Dark Mode And ☀️ Light Mode In Application。链接:https://www.youtube.com/watch?
2025-02-04 22:24:34
410
原创 qt-Quick3D笔记之官方例程Runtimeloader Example运行笔记
【代码】qt-Quick3D笔记之官方例程Runtimeloader Example运行笔记。
2025-01-31 03:04:21
827
原创 qt-QtQuick笔记之常见项目类简要介绍
简介:继承自QQuickItem,提供了自定义绘制的功能,可以通过重写paint()方法来绘制任意内容。用途:用于自定义控件绘制,适用于图表、绘图应用等需要动态更新绘制的场景。Q_OBJECTpublic:width: 200width: 100运行。
2025-01-28 00:00:53
1447
原创 qt-C++笔记之QLine、QRect、QPainterPath、和自定义QGraphicsPathItem、QGraphicsRectItem的区别
类名定义特点使用场景QLine表示由两点定义的直线段- 轻量级- 整数精度- 几何计算- 基本绘制描述复杂绘图路径的类- 灵活构建任意复杂路径- 浮点精度- 支持布尔运算- 复杂形状绘制- 路径动画在 QGraphicsScene 中显示 QPainterPath 的图形项- 可视化复杂路径- 支持交互和变换- 图形编辑器- 数据可视化自定义 QGraphicsPathItem继承 QGraphicsPathItem,实现自定义行为- 可扩展性强。
2025-01-25 15:09:12
1172
原创 C++笔记之数据单位与C语言变量类型和范围
为了提高程序的可移植性,C99标准引入了固定宽度的整数类型,定义在<stdint.h>头文件中。这些类型确保了不同系统和编译器上变量类型的位宽一致性,从而避免了因为平台差异导致的溢出或数据损失问题。类型含义大小(字节)范围2 的幂次方表示int8_t8 位有符号整数1-128到127-2⁷到2⁷ - 1uint8_t8 位无符号整数10到2550到2⁸ - 1int16_t16 位有符号整数2-32,768到32,767-2¹⁵到2¹⁵ - 1uint16_t16 位无符号整数2。
2025-01-11 23:50:06
213
原创 qt-C++笔记之自定义继承类初始化时涉及到parents的初始化
在继承类中,通常需要在构造函数中通过调用父类的构造函数来初始化parent。合理设置parent可以让 Qt 对象树自动管理对象的生命周期。如果不使用parent,需要手动管理对象的生命周期。动态设置parent或结合智能指针管理对象是可行的,但需要小心避免冲突。在声明与实现分离时,parent的初始化通过构造函数的初始化列表实现。在头文件中声明构造函数时,可以为parent提供默认值nullptr。在源文件中通过调用父类构造函数进行初始化。
2025-01-11 19:56:25
1087
原创 C++笔记之`size_t`辨析
size_t使用场景如果需要表示大小或索引,优先使用size_t。如果需要处理负数或涉及减法运算,谨慎使用size_t,考虑使用有符号类型(如ssize_t,在 POSIX 中定义)。注意事项避免将size_t与有符号类型混用。格式化输出时,使用%zu以避免问题。编写高质量代码在循环中,若索引与数组大小相关,使用size_t。在函数参数中,若需要传递大小或长度,使用size_t。通过合理使用size_t,可以编写更加健壮、跨平台的 C/C++ 程序。
2025-01-06 23:01:45
168
原创 C语言笔记之`char*`、`const char*` 和 `char[]`辨析
char*是字符指针,存储的是字符数组或字符串的首地址。它可以指向动态分配的字符串、静态字符串常量或字符数组。默认情况下,char*指针所指向的内容是可修改的(但要确保它指向的内存是可写的)。是指向常量字符的指针,表示字符串内容是只读的。使用可以防止意外修改所指向的字符串内容,这是对只读字符串或常量字符串的推荐做法。char[]是一个字符数组,表示一块固定大小的内存,用来存储字符串或字符数据。数组的内容通常是可修改的,除非用const修饰。
2025-01-06 22:46:40
153
原创 qt-C++笔记之动画框架(Qt Animation Framework)入门
用于对对象属性(如位置、大小、透明度等)进行动画处理,直接操作QObject的特定属性。如果需要更复杂的动画效果,可以自定义动画逻辑或插值方式。Qt 提供了多种内置的动画曲线,比如线性、弹跳、缓动等。如果默认曲线无法满足需求,还可以使用自定义动画曲线。// 这里使用简单的二次函数曲线 y = t^2});Qt 提供了非常强大的动画框架,适用于各种场景,包括简单的 UI 动画、复杂的场景动画,以及自定义动画效果。建议先从入门,熟悉后再学习与的组合用法,以及在场景中使用。
2025-01-05 21:52:50
1250
原创 C语言笔记之strnlen遇到第一个‘\0‘时会停止计数导致字符串被截断吗?
strnlen遇到第一个'\0'时会停止计数,但这只是它的正常行为,不会导致字符串被截断或修改。它的作用是安全地计算字符串长度,避免超出指定的最大检查范围,从而防止访问未定义内存区域。
2025-01-02 00:19:40
96
原创 C++笔记之‘\n‘和‘\0‘
特性'\n''\0'含义换行符字符串的结束符ASCII 值100作用表示换行标识字符串结束常见用途格式化输出,文本换行处理字符串是否可见是(在输出中换行可见)否(是非打印字符)
2025-01-02 00:15:11
155
原创 C++笔记之尾后迭代器
1.C++笔记之尾后迭代器2.C++笔记之迭代器失效问题处理在C++中,(通常称为)是指指向容器中最后一个元素之后的位置的迭代器。它并不指向任何有效的元素,而是用来表示容器的结束边界。尾后迭代器通常通过容器的end()成员函数获取。
2025-01-01 23:47:31
304
原创 C++笔记之C语言和C++中未初始化变量的默认值问题
局部变量:未初始化始终是未定义的(垃圾值)。全局变量和静态变量:始终默认初始化为零值。malloc未初始化,calloc初始化为零。
2025-01-01 16:07:44
213
原创 C++笔记之C++中的argv[0]和Linux bash脚本中的$0区别
argv[0]是main函数的参数列表中的第一个参数。它通常表示程序的名称或被用来启动程序的路径。在 C++ 程序中,argv[0]是一个字符串指针 (char*),可以通过它获得程序的调用名。特性argv[0](C++)$0(Bash)表示内容程序名或路径脚本名或路径数据类型字符指针 (char*字符串值的来源操作系统提供Shell 提供值是否包含路径根据执行方式,可能包含路径根据执行方式,可能包含路径特殊情况某些环境下可能为空字符串source或。
2024-12-29 20:34:52
145
原创 C++笔记之格式化字符串
格式化字符串是一种灵活的字符串生成方式,能够根据变量动态创建内容,同时提供多种格式化选项。不同语言提供的格式化方式略有不同,但核心思想类似:通过占位符插入变量,并可控制其格式。
2024-12-29 19:14:47
110
原创 C++笔记之标识符与字面量
标识符(Identifier)是用于命名变量、函数、类、方法或其他用户定义元素的名称。它是程序中指代某个实体的符号。字面量(Literal)是指程序中表示固定值的符号,即直接写在代码中的常量值。字面量通常用于表示数字、字符、字符串、布尔值等。标识符是程序中用于命名变量、函数、类等元素的名称。字面量是程序中直接表示固定值的符号。它们的区别在于:标识符是用户定义的名称,而字面量是直接使用的常量值。
2024-12-29 18:30:24
113
原创 qt-C++笔记之自定义类继承自 `QObject` 与 `QWidget` 及开发方式详解
Qt 提供了多种开发方式,以满足不同项目的需求和开发者的偏好。本节将介绍三种主要的开发方式,并通过示例展示其整体结构。特点在 Qt Designer 中拖拽预设控件(通常是占位符,如QWidget),然后通过 “Promote to” 功能将其替换为自定义的子类。允许在可视化设计中集成自定义的 UI 组件。优点结合了可视化设计的便捷性和自定义组件的灵活性。使得复杂或定制化的 UI 组件能够在 Designer 中被复用和管理。缺点需要确保自定义类正确继承自QWidget或其子类。
2024-12-15 19:36:28
1617
原创 qt-C++笔记之父类窗口、父类控件、对象树的关系
/ 'this' 是 MyWidget 的实例在MyWidget的构造函数中创建一个,并将this作为父对象,使按钮成为MyWidget的子控件。
2024-12-15 19:32:28
1174
原创 qt-C++笔记之继承自 QWidget和继承自QObject 并通过 getWidget() 显示窗口或控件时的区别和原理
继承自QWidget:用于直接实现可视化控件或窗口,简单直接。继承自QObject并使用:用于逻辑与界面分离的场景,常见于复杂系统或需要灵活扩展的应用程序。
2024-12-15 19:31:06
1054
原创 qt-C++语法笔记之mapToGlobal将组件(控件)中的本地坐标系(局部坐标)映射到全局坐标系
方法功能说明局部坐标 → 全局坐标全局坐标 → 局部坐标局部坐标 → 父控件坐标父控件坐标 → 局部坐标是 GUI 编程中处理坐标转换的重要工具,能够帮助开发者将局部坐标映射到全局坐标,从而实现精确的界面定位和交互功能。了解它的工作机制以及与其他坐标转换方法的区别,是高效开发 GUI 程序的基础。
2024-12-09 23:11:06
917
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人