- 博客(33)
- 资源 (3)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 单字节转多字节,多字节转单字节,C++实现
char * 或char[] 转 LPCTSTR 类型问题描述:今天在想在MFC的IP显示控件中显示本机IP地址,于是调用了SetDlgItemText()函数。结果显示:尝试解决未果经验告诉我:这只是一个简单的兼容性问题,将 slzp 强制转成 LPCTSTR 类型就行,结果显示乱码:于是意识到这是一个字符编码问题。尝试搜索,大量的回答都是加 _T() 这个宏定义,但是该宏定义只能转...
2020-01-22 22:32:48
1049
1
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 条件编译之——#define,#ifndef #define #endif ,#pragma once,#if defined
预定义符号 #define例1:#define MAX_SIZE 20#define 用于替换文本代码#define MAXSIZE 20void main(){ char str[MAXSIZE];}编译器在处理这个代码之前会对MAXSIZE进行处理,替换为20。例2:替换参数#define DOUBLE(x) ((x)+(x))#define DOUBLE(x) (...
2019-05-08 23:44:33
451
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 C语言中结构体内存分配问题
关于结构体内存分配机制的详解。 直接上例子。typedef struct strdent1{ int a; //4字节 char b; //1字节 char c[3]; //3字节}std1; //4+1+3=8typedef struct strdent2{ char a[3]; //3字节 int b; //4字节 char c; /...
2019-04-19 16:42:02
1067
原创 win32多媒体定时器
win32多媒体定时器几个拉跨的定时器精度select选择模型:15msSleep(1) :15mstimeGetTime: 5msQueryPerformanceCounter:<1微秒 (win2000支持)精度达到1ms的定时器:多媒体定时器(win95支持)原理分析:多媒体定时器被创建后,应用程序有一个定时器消息队列,系统以1ms(最高精度)的周期向程序发送定时器消息。当应用程序收到消息时,调用回调函数。此回调函数优先级非常高(最高),甚至可以将Sleep的精度压缩到1ms(普通
2022-04-05 15:19:18
1802
2
原创 Windows高精度时钟
封装几个代码,方便以后查询和使用Windows高精度时钟 精度:<1us 微秒1.1Function 1统计一段代码的CPU时间 LARGE_INTEGER freq; LARGE_INTEGER beginTime; LARGE_INTEGER endTime; QueryPerformanceFrequency(&freq); QueryPerformanceCounter(&beginTime); //测试代码块时间 Begin //测试代码块时间
2021-08-02 12:28:03
1131
原创 CreateThread()总结
HANDLE hThread = CreateThread(NULL,0,runThread,this, CREATE_SUSPENDED,NULL);创建一个挂起的线程ResumeThread(hThread);恢复线程SuspendThread(hThread);挂起线程注意:线程挂起几次就要恢复几次
2021-06-16 09:37:40
243
原创 电梯模拟程序
Qt5编写的电梯控制模拟程序 附源码图源代码链接地址:系统架构逻辑实现elevator.helevaotr.cpp未完待续、、、用c++和qt5编写的单电梯模拟程序简介:这是一个在Qt5中构建的小型电梯模拟程序。包括门控和电梯升降控制。因为我在其中使用win32 api, MSVC应该是构建的选择。目前,它仍然存在一个小bug,它总是由最近的呼叫面板信号引起的。还有一件事,当系统准备好启动时,必须首先单击启动按钮,否则将发生意外的错误。图开机图:启动图:源代码链接地址:GitHub源代码链
2021-04-12 21:48:19
2194
1
原创 LeetCode力扣--203题:移除链表元素C++
题目描述:LeetCode203:移除链表元素要求:删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5解法:废话不多说,先来一段官方的代码与原创代码对比截图:官方代码:官方代码不美观在:0:一共15行代码,代码缩进结构十分紧凑1:在堆上申请了一块内存,最后还得释放2:在栈区创建了5个指针变量,操作繁琐3:在while循环结束之
2021-02-23 00:00:00
372
2
原创 c++之vector 及 二维容器vector<vector<int>>初始化方法 及 三维数组初始化
C++二维容器vector<vector>初始化方法解析遇到的问题:在解决“求最大字串”问题时想到了用二位数组vector<vector<int>> table,但是不知道怎么对其进行初始化(初始化时指定二维容器的大小),于是网上搜索一番,最终找到了如下一行代码:vector<vector<int>> table(size1, vector<int>(size2, 0));代码说明:声明一个名为table的容器,其元素为vec
2021-02-15 18:30:02
38981
6
原创 WINDOWS核心编程第一章-错误处理
windows为所有错误集合在一个头文件<WinError.h>用DWORD GetLastError(); 获取最后错误。原理:每个线程有个独立的“线程本地存储区域”,用于存放最后调用的函数返回的错误代码,存储在 $err,hr 中。监视错误窗口: $err,hr方法: 在Visual Studio ,调试窗口底下的监视中添加 :$err,hr功能: 获取当前进程调用的最近一个函数返回的错误代码!PVOID 类型: void*Error Lookup: 在 Visual Stu
2021-02-15 16:43:28
165
原创 腾讯笔试题:请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句
请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句解析:定义一个宏:翻译-定义一个带参数的宏#define COMPARE(X,Y)不能使用大于,小于,if语句:翻译-使用三目运算符(1)?(1):(0)解决方案1:使用abs函数,该方法比较简单,没有利用运算结果符号位是否相等的原理//1、请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句#include<cmath>#include<stdio.h>#define COMP.
2020-08-03 21:50:22
1033
原创 select选择模型相关知识点
知识点:select函数int select(fd_set* readfds,fd_set* writefds,fd_set* exceptfds,const struct timeval* timeout);知识点:fd_set结构体fd_set.u_intfd_set.socket[]FD_ZERO()FD_SET()FD_CLR()FD_ISSET()知识点: timeva...
2020-02-26 16:15:21
307
原创 const指针语义 -- const int* const p ; const int *p ; int * const p;
问题描述:在遇到const修饰指针的问题时,如何快速翻译出每个const 所修饰的对象? 以及const 在不同位置时,该类型指针的哪些东西可以被修改,哪些又不能被修改?下面介绍一种简单的方法:问题实例:const 的组合无非就4种:1.int * const p; //const 在*和p之间2.const int *p; //const int* 前面3.int const *p...
2020-01-24 12:52:06
687
原创 桶排序迷你版--C语言实现
#include<stdio.h>int main(){ int a[11]={0},box,j,k,i; //数组初始化 for(i=0;i<11;i++) a[i]=0; //输入10个数字 for(i=1;i<=5;i++) { scanf("%d",&box); if(box>=0 &...
2019-10-04 13:12:31
255
原创 Unicode与C 重点摘要-Windows程序设计第二章上
关键名词部分:Unicode: Unicode 扩展自 ASCII 字元集ASCII 美国资讯交换标准码 American Standard Code for Information Interchange Size:7 位元ISO: 国际标准化组织 (ISO:International Standards Organization)内码:11010001 10100111 存储在计算机...
2019-10-03 23:46:57
218
原创 Windows程序设计(第五版)第一章 总结
WIN32程序设计(第五版) 第一章(WINDOW环境) 重点提要windows简史MS-DOS:MS-DOS 是一个小型的作业系统MS-DOS 提供给用户一种命令列介面,提供如 DIR和 TYPE 的命令,也可以将应用程式载入内存执行。对于应用程序写作者,它提供了一组函式呼叫,进行档案的输入输出(I/O )。对于其他的周边处理——尤其是将文字或图形写到显示器上——应用程序可以直接存取 PC...
2019-09-29 23:27:06
324
原创 线程优先权Thread Priority概念总结
全文参考《WIN32多线程设计》一书。为什么会有线程优先权:为什么CPU处理线程时会按优先级执行?想象在忙碌的一天中,有很多事情待做但时间又不够,其中有很多紧急的事情。比如当晚的英语在线测试,明天的正式作业,下午重要的考试等等,你将如何安排一天的活动?如果这期间时想上厕所,或突然来电话了,你将如何选择?…是不是最重要的事最先做?这时候当然就要有个做事的主次顺序,这种处理事情的主次顺序反映在WI...
2019-06-23 23:45:51
10894
1
原创 Windows线程同步-如何终止一个线程
如何终止一个正在运行的线程:强制终止线程就一个原则,最好让线程自己结束,即线程return;1.用TerminateThread()BOOL TerminateThread(HANDLE hThread,DWORD dwExitCode);书中解释:TerminateThread() 看 起 来 不 错 , 直 到 我 读 了 一 份 文 件 , 上 面 说 :“ Terminat...
2019-06-19 21:41:51
467
原创 windows线程同步-事件Event用法总结
事件对象创建一个事件参数介绍实例:SetEventRestEvent程序实例程序需求设计思路程序实例截图结合代码总结分析
2019-06-17 22:06:01
1902
原创 信号量 Semaphore 用法及注意事项总结
信号量信号量在WIN32系统中是核心对象,故其用法同其他同步机制类似,但可应用于多个线程同步运行,即同时有至多有限个线程同时工作,而线程上线数量取决于初始化时指定的最大值。1.创建一个信号量创建时初始值不要超过信号量最大限度。HANDLE CreateSemaphore(LPSECURITY_ATTRIBUTES lpAttributes,LONG lInitialCount,LON...
2019-06-15 15:58:27
1404
原创 Windows多线程-互斥器Muetex用法总结以及如何避免死锁
Muetex()Muetex()是一个核心对象,所以其可用WaitForSingleObgect()来等待先介绍用于线程同步的互斥器的用法:一:产生一个互斥器二:等待互斥器激活三:释放互斥器...
2019-06-14 16:41:28
344
原创 Windows多线程编程-临界区-产生死锁
Deadlock //死锁问题问题引入:在目前的Windows系统中如果一个线程进入某个 critical section 而在未离开的情况下就结束(异常结束),而没有 执行LeaveCriticalSection() 的话,之后别的线程可以进入该临界区域吗?程序实例:1)正常退出临界区域2)不退出临界区域结论:经对比发现,不退出临界区域的话,其他线程则无法进入该临界区域,这在一定程度...
2019-06-12 13:24:35
566
原创 Windows多线程-Critical Section(关键区域,临界区域)用法及实例
CreateThread第四个参数的应用。#include<stdio.h>#include<Windows.h>DWORD WINAPI fun1(LPVOID P){ int *p=(int *)P; *p=(*p)*(*p); return 0;}int main(){ int a=5; HANDLE h1=CreateThread(N...
2019-05-24 11:40:40
819
翻译 将字符串逐一入队,再出队列输出。
**C语言 创建一个简单链式队列代码:将字符串逐一入队,再出队列输出。**队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。要点1.队列节点:typedef char Elementype;typedef struct N...
2019-05-11 17:04:19
2773
原创 C语言——栈(顺序存储)
栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。定义一个栈的结构体: #define MaxSize 100 ...
2019-04-26 15:20:13
521
2
原创 C语言创建单链表
单链表链表节点结构体struct node{ char name[10]; float score;}typedef struct node{ struct node; struct node*next;}LinkList;初始化一个链表void InitLinkList(LinkList*&L){ L=malloc(sizeof(LinkList))...
2019-04-23 21:32:49
42921
7
原创 C语言 文件操作
C语言文件操作文件结构体FILE*fp;打开文件,关闭文件fopen()FILE*fp=fopen(“XXX.txt”,“w”) ;fclose()fclose(fp);fopen(“路径+文件名”,“打开方式”);打开方式: 文件使用方式由r,w,a,t,b,+六个字符拼成,各字符的含义是:参数意义r(read):读...
2019-04-22 15:12:43
290
原创 C语言打印菱形
用C语言打印出菱形例如,观察下面这个菱形。这个菱形共13行,前7行逐行自1加2个星星1,3,5,7,9,11,13.发现,最中间一行星数恰好等于行数。则相应打印上半部分星星数代码为:#include<stdio.h>int main(){ int length=13; for(int i=1;i<=length/2+1;i++) { for(int j=0;...
2019-04-19 15:43:32
805
原创 C语言 指针的常见用法
一维指针--用函数交换两个数的值#include<stdio.h>void fun1(int a,int b){ int temp; if(a>b) { temp=a; a=b; b=temp; }}void fun2(int *a,int *b){ int c; ...
2019-04-17 21:53:25
369
原创 Day for C语言基础——— 数组,字符串
初始化一维数组#include<stdio.h>int main(){ int a[10]={1,2,3,4,5}; //没有赋初值的部分自动变为0 int b[]={1,2,3,4,5} //系统自动判断数组大小 for(int i=0;i<10;i++) { printf("a[%d]=%d\tb[%d]=%d\n",i,a[i],i,b[i]);...
2019-04-16 22:04:36
237
原创 程序员生活Day3 C程序结构:循环和选择
**C语言结构:循环和选择if() 语句 判断成绩等级int main(){ float k; scanf("%f",&k); if(k>=85) { printf("优秀\n"); } else if(k>=60) { printf("良好\n"); } else { printf("不及格\n"); } return 0;}...
2019-04-15 22:00:04
207
原创 程序员生活Day2C语言简单语法
C语言基本语法——变量例1:变量的声明和初始化#incude<stdio.h>int main(){ char a=10; int b; b=20; float c; c=(float)0; double d; d=2.0; printf("a=%c\tb=%d\tc=%f\td=%lf\n",a,b,c,d); return 0;}例2:从键盘读入...
2019-04-15 21:39:57
259
原创 程序猿生涯的第一天
c语言第一个程序#incldue<stdio.h>int main(int argc,char *argv[]){printf("%d\n",argc);printf("%s\n",*argv[0]);return 0;}
2019-04-12 21:40:36
228
C语言课设火车站售票系统.c
2021-03-21
653P1-2.pdf
2021-03-21
Labwindows/CVI蒙娜丽莎拼图游戏.zip
2019-12-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人