- 博客(31)
- 收藏
- 关注
原创 Windows--线程间通信
定义一个全局变量表示累加到10、100还是1000,然后把全局变量放到单选按钮对应的槽中,然后在线程函数中,进行从1到对应数字的累加,然后再把计算出来的值通过信号发送给槽,通过槽函数让结果表示在界面的文本框中。将线程创建函数中的第五个参数改为CREATE_SUSPENDED(挂起),这样线程在创建时便会挂起,不会立即执行,之后在单选函数的槽中加入线程恢复函数,让线程进入运行态,去执行线程函数。从左到右四个参数依次是信号的发送者、发送的信号(函数地址)、信号的接收者、处理的槽函数(函数的地址)。
2025-05-27 23:56:46
324
原创 Windows入门学习3--线程2
TerminateThread()结束指定线程,但是不安全,不论线程在做什么都直接结束。有两个参数,第一个参数是指定的线程,第二个参数是线程的结束方式:0是正常结束,-1是强制杀死。因此可以用更加温柔的方式结束线程,从进程运行的条件入手,在for里面加一个标志,在按下结束按钮的时候,让标志结束for的运行。挂起和恢复一个线程是计数的,比如我连续挂起三次同一个线程后,就要连续恢复该线程三次才能恢复线程。ExitThread()可以结束线程,但是是直接结束主线程。ResumeThread()恢复被挂起的线程。
2025-05-25 23:54:05
211
原创 Windows入门学习2---进程和线程
摘要:本文介绍了进程和线程的基本概念及其在32位和64位操作系统下的内存分配方式。32位系统进程拥有4GB虚拟地址空间,分为空指针、用户和内核模式;64位系统则拥有16TB空间,分为用户和内核模式。文章详细说明了Windows API中CreateProcess函数创建进程的方法,并演示了如何用Qt创建多线程程序。针对线程间通信问题,提出使用信号槽机制解决子线程访问主线程UI的问题,确保程序在死循环时仍能响应界面操作。通过进度条案例展示了多线程编程的实际应用。
2025-05-24 00:02:00
529
原创 Windows学习入门1---简易任务管理器
通过ui->tableWidget中的setItem函数可以将进程信息表现在窗口上,该函数中包含表格内信息的参数类型为QTableWidgetItem *,因此需要将上述结构体中表示进程信息的成员转化为该类型,才能在表格中显示出来。通过TerminateProcess函数可以结束进程,该函数需要得知进程的句柄,通过OpenProcess函数可以获得进程的句柄,该函数需要得知进程的ID,在表格中已经知道了指定进程的ID。要构建一个能显示进程名称,进程ID和线程数,并且能够结束指定进程。
2025-05-21 23:54:12
389
原创 new和malloc的区别
malloc 一般用free() 释放, new 用delete 释放,如果delete释放连续地址时,要在delete后加[]在加地址名,eg:char* str = new char[4];malloc 不能赋值 , new 可以赋值;malloc 是函数 , new 是关键字;
2024-08-04 16:44:08
149
1
原创 栈的删除和添加,以及函数的执行顺序
不管栈知否为空,if中的代码执行都不受干扰,则可以去除if和else。栈的删除就是直接删除头结点,让头结点指向的下一个结点成为新的头结点,同时释放旧结点的内存空间,再返回删除的头结点的值证明删除的是头结点。代码1不可被执行,报错原因:c是一个未初始化的局部变量。在添加前也要判断栈是否为空,如果为空则直接让头结点等于新结点。代码2可以被执行,是先输入c,再对c进行输出。识别顺序是从左到右的,执行顺序是从右到左的。函数的执行顺序类似于栈,是先识别的后输出。,再让新结点成为尾结点),栈的添加是让。
2024-07-20 15:39:44
314
原创 队列的添加和删除
队列不为空时,先创建一个中间节点,把要删除的节点(头结点)赋给中间节点,再把头结点的下一个结点赋给头结点,这时原来头结点的内容就被转移到了中间结点,再把中间结点中包含的值提取出来用来输出,证明删除的是哪个结点,然后再把中间结点进行释放,构造一个结点,当头结点不为空时,让尾结点的pNext指向pTemp,把新结点插入链表成为最后一个元素。当头结点为空时,说明该链表为空,直接让头结点等于新结点。最后再让新结点成为尾结点,把新结点赋给尾结点。,如果头结点为空,则说明该队列不含元素,要把。
2024-07-19 15:31:52
273
原创 C语言结构体对齐
a b c 三个基本单位其中最大进本类型为 int 占位 4位;以最大基本类型占位为对齐单位,将其他基本类型插空放入;该结构体与eg1中含有的类型相同但是位置不同;根据位置进行排列组合得最终占位为:12位。该结构体的各基本类型占位情况如下。该结构体占位为:32 位;1.结构体各成员对齐;该结构体占位为:3位;2.结构体总体对齐;所以最终结果为:8位。
2024-06-02 10:24:25
169
原创 比较字符串大小的两种方式
较短字符串的末尾字符与另一字符串的同位置的字符的比较;由于字符串除有效字符外,后面剩余位置均为‘/0’所以根据此特性设计strcmp代码。
2024-06-01 23:11:10
360
1
原创 学习日志20
上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。输入若干个学生的信息(学号、姓名、成绩),当输入学号为0时结束,用。组织这些学生信息后,再按顺序输出。
2023-12-21 17:17:08
58
原创 学习日志19
面向对象程序设计(Object Oriented Programming)作为一种新方法,其本质是以建立模型体现出来的抽象思维过程和面向对象的方法。模型是用来反映现实世界中事物特征的。任何一个模型都不可能反映客观事物的一切具体特征,只能对事物特征和变化规律的一种抽象,且在它所涉及的范围内更普遍、更集中、更深刻地描述客体的特征。通过建立模型而达到的抽象是人们对客体认识的深化。定义立方体类Box,数据成员有长宽高且都是整数,构造函数初始化数据成员,成员函数计算体积,主函数中输入长宽高,输出立方体体积。
2023-12-21 17:14:52
54
原创 学习日志18
中,只要任意行、列,或者任意对角线上面出现三个连续相同的棋子,就能获胜。请根据棋盘状态,判断当前输赢。KiKi和BoBo玩 “井”字棋。
2023-12-21 17:06:42
58
原创 学习日志17
请在平面直角坐标系中定义一个Point类,有两个数据成员:x和y, 分别代表x坐标和y坐标,并有若干。和一个移动的成员函数,可输出移动后新点的坐标值。
2023-12-21 17:05:08
66
原创 学习日志16
骆驼式命名法(Camel-Case)又称驼峰式命名法,是电脑程式编写时的一套命名规则(惯例)。正如它的名称CamelCase所表示的那样,是指混合使用大小写字母来构成变量和函数的名字。程序员们为了自己的代码能更容易的在同行之间交流,所以多采取统一的可读性比较好的命名方式。
2023-12-21 17:03:47
45
原创 学习日志15
其中A表示一个m×n的矩阵,B代表一个n×r的矩阵(能相乘的矩阵,左矩阵的列必须要等于有矩阵的行)。那么得到的C理应是一个m×r的矩阵。输入NxM矩阵,矩阵元素均为整数,计算其中大于零的元素之和。传递到函数要一行一行传递。
2023-12-21 17:02:39
67
原创 学习日志13
一个函数在它的函数体内直接或间接地调用自身称为函数的递归调用,而这种函数被称为。间接调用:是指函数在递归函数调用的下层再调用自己。直接调用:是指函数直接调用自己。
2023-12-21 16:45:33
93
原创 学习日志11
第一行包含两个整数m和n,表示图像的行数和列数,用单个空格隔开。之后m行,每行n个整数0或1,表示第一幅黑白图像上各像素点的颜色,相邻两个数用单个空格隔开。之后m行,每行n个整数0或1,表示第二幅黑白图像上各像素点的颜色,相邻两个数用单个空格隔开。给出两幅相同大小的黑白图像(用0-1矩阵)表示,求它们的相似度。若两幅图像在相同位置上的像素点颜色相同,则称它们在该位置具有相同的像素点。两幅图像的相似度定义为相同像素点数占总像素点数的百分比。
2023-12-21 16:40:54
40
原创 学习日志10
斐波那契数列(Fibonacci sequence),又称黄金分割数列 ,因数学家莱昂纳多· 斐波那契 (Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称“兔子数列”,其数值为:1、1、2、3、5、8、13、21、34……在数学上,这一数列以如下 递推 的方法定z义:F(0)=1,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)。
2023-12-20 21:57:01
48
1
原创 学习日志9
汉诺塔问题是一个经典的问题。汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,任何时候,在小圆盘上都不能放大圆盘,且在三根柱子之间一次只能移动一个圆盘。1.将A柱上的n-1个盘子借助C柱移向B柱。3.将B柱上的n-1个盘子借助A柱移向C柱。2.将A柱上仅剩的最后一个盘子移向C柱。
2023-12-20 21:36:51
56
1
原创 学习日志8
两个整数,空格间隔,分别表示十进制整数n ( 1 ≤ n ≤ 109 )和r(1 ≤ r ≤ 16)进制。,他想转成r进制,请你编程帮他实现。
2023-12-20 21:28:43
131
1
原创 学习日志7
法,是一种适用于大量数据查找的方法,但是要求数据必须的排好序的,每次以中间的值进行比较,根据比较的结果可以直接舍去一半的值,直至全部找完(可能会找不到)或者找到数据为止。
2023-12-20 21:27:10
30
1
原创 学习日志6
sort()函数有三个参数sort(begin, end, 参数三)。begin为指向待sort()的数组的第一个元素的指针,end为指向数组的最后一个元素的下一个位置的指针,参数三为排序方式,参数三如果不写,默认从小到大进行排序。将参数三写为greater()就是从大到小进行排序。<>中也可以写double、long、float等等,看我们变量类型了。sort()排序是C++中自带的排序算法函数。sort()函数可以对给定区间所有元素进行排序。在C++中使用sort()函数需要使用。
2023-12-20 21:22:13
44
1
原创 学习日志3
假如输入123,首先将123取余求各位,接着将123/10再次取余求十位,以此类推直到取余为零结束,将最先取余的数乘十加上后取余的数,即可反转该数。
2023-12-20 21:15:04
59
1
原创 学习日志2
一维数组,是由数字组成的以单纯的排序结构排列的结构单一的数组,是计算机程序中最基本的数组。运用一维数组可以完成很多数据众多的程序,如天数的计算。可以看作是一维数组的多次叠加产生的。
2023-12-20 21:09:23
43
1
原创 学习日志1
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。冒泡排序(Bubble Sort)也是一种简单直观的排序算法。如果第一个比第二个大,就交换他们两个。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
2023-12-20 21:06:53
65
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人