自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 资源 (1)
  • 收藏
  • 关注

原创 汉诺塔递归写法

汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,任何时候,在小圆盘上都不能放大圆盘,且在三根柱子之间一次只能移动一个圆盘。这类问题往往都是递归解法(如斐波拉契数列),我们先考虑3个盘的情况,然后推导到全部。...

2018-09-19 23:25:34 443

原创 单例模式(懒汉式和饿汉式)及如何实现线程安全

单例模式有两种:懒汉式和饿汉式。1 #include <iostream>23 using namespace std;456 // 保证在整个程序运行期间,最多只能有一个对象实例789 // 懒汉式10 // 1 、构造函数私有化11 // 2 、写一个静态函数获取对象指针12 // 3 、有一个静态成员变量,保存对象指针13 class Singl...

2018-09-06 19:04:35 1840

原创 八种排序算法之冒泡排序(冒泡排序的优化,双向冒泡)

首先,让我们看看基本的冒泡排序#include <iostream>using namespace std;void swap(int *a, int i, int j){ int tmp = a[i]; a[i] = a[j]; a[j] = tmp;}void print(int *a, int len){ for(int i = 0; i < ...

2018-08-27 13:29:06 1305

原创 八种排序算法之插入排序

#include <stdio.h>// 交换数组中下标为 i 和下标为 j 的元素的值void swap(int *a, int i, int j){ int tmp = a[i]; a[i] = a[j]; a[j] = tmp;}// 打印数组void print(int *a, int len){ int i; for (i = 0; i <...

2018-08-25 09:46:32 220

转载 QT中slot,signal,emit讲解

Qt中的类库有接近一半是从基类QObject上继承下来,信号与反应槽(signals/slot)机制就是用来在QObject类或其子类间通讯的方法。作为一种通用的处理机制,信号与反应槽非常灵活,可以携带任意数量的参数,参数的类型也由用户自定。同时其本身也是类型安全的,任何一个从QObject或其子类继承的用户类都可以使用信号与反应槽。     信号的作用如同Windows系统中的消息。在Q...

2018-08-22 18:27:29 3300 1

转载 STL容器set使用说明(set保存自定义数据)

c++ stl集合set介绍   c++ stl集合(Set)是一种包含已排序对象的关联容器。set/multiset会根据待定的排序准则,自动将元素排序。两者不同在于前者不允许元素重复,而后者允许。1) 不能直接改变元素值,因为那样会打乱原本正确的顺序,要改变元素值必须先删除旧元素,则插入新元素2) 不提供直接存取元素的任何操作函数,只能通过迭代器进行间接存取,而且从迭代器角度来看,...

2018-08-17 10:05:35 1489

原创 八种排序算法之选择排序

#include <stdio.h>// 交换数组中下标为 i 和下标为 j 的元素的值void swap(int *a, int i, int j){ int tmp = a[i]; a[i] = a[j]; a[j] = tmp;}// 选择排序void sort(int *a, int len){ // 在数组中下标找最小元素的下标 int i, j...

2018-08-15 21:28:12 251

原创 总结一下scanf和gets两个输入函数的区别,及如何混用

1,scanf这是我们最常见的函数,scanf是标准输入函数,使用形式:scanf(“%d”, &num)优点:可以输入所有类型的数据类型,并且效率非常高,是cin的十几倍;缺点:scanf()遇到空格、回车、Tab即结束。2,getsgets()是在stdio.h中是输入函数,使用类型:gets(str)。可以从标准输入类中读取一行字符到指定的字符串中,它在遇到E...

2018-08-10 16:00:21 2130

原创 字符串常用函数讲解(strcpy,strcmp,strstr,strncat,strlen,strspn)

1,strcmp 原型:int strcmp(const char *s1,const char *s2)返回值:s1 == s2,返回0;s1 < s2,返回负数;s1 > s2,返回正数规则:从左到右比较ASCII码,直到‘/0’结束。 2,strcpy原型:char *strcpy(char* dest, const char *src)返回值:返回值...

2018-08-10 14:50:13 655

原创 C++中常量指针和指针常量的区别

一、常量指针常量指针本质是指针,常量修饰它,表示这个指针是一个指向常量的指针(变量),也就是指向一个无法修改的量。C++中常量指针定义为:const int* a,当然int const * a也可以,不过习惯用第一种了。使用常量指针时要注意,指针指向的对象不能通过这个指针来修改,因为对象现在是常量了,不可以修改,例如:int tmp = 65;const int *c = &...

2018-08-03 23:05:04 2647 1

原创 C语言中ASCII码的几种表示方法

C语言中ASCII字符表示方法通常有三种方法:第一种方法是单引号表示方法,例如:’a‘,‘g’。第二种方法是十进制,十六进制表示,例如:70表示F(十进制),0x40表示@(十六进制)。第三种方法是转义字符表示,例如:\r回车,\n换行,主要表示控制字符。...

2018-07-30 09:40:46 24057

转载 C语言 sprintf函数使用详解

srpintf()函数的功能非常强大:效率比一些字符串操作函数要高;而且更具灵活性;可以将想要的结果输出到指定的字符串中,也可作为缓冲区,而printf只能输出到命令行上~头文件:stdio.h函数功能:格式化字符串,将格式化的数据写入字符串中。函数原型:int sprintf(char *buffer, const char *format, [argument]...)参数:...

2018-07-24 16:01:52 2285

原创 ESP8266 固件无法烧录问题

今天干了件蠢事,我把ESP8266设置为自动连接wifi命令AT+CWAUTOCONN和保存透传AT+SAVETRANSLINK,原本图方便。结果每次都连接到上电自动连接服务器,每一个AT命令都无法执行,想换服务器都不行,最最最关键的是退出透传模式的指令+++也成了传输数据,结果只能烧录。ESP8266模块我用的是正点原子的,采用了安信可公司的芯片,烧录开始用官方文档,如下。  ...

2018-07-20 19:34:26 11064

原创 STM32八种IO模式

在 STM32 中八种 IO 模式(1) 浮空输入_IN_FLOATING ——浮空输入,可以做 KEY 识别,RX1;(2)带上拉输入_IPU——IO 内部上拉电阻输入;(3)带下拉输入_IPD—— IO 内部下拉电阻输入;(4) 模拟输入_AIN ——应用 ADC 模拟输入,或者低功耗下省电;(5)开漏输出_OUT_OD ——IO 输出 0 接 GND,IO 输出 1,悬空...

2018-07-18 19:35:27 1104

原创 数据结构——循环队列

(一)头文件 1 #ifndef _LINKLIST_H_ 2 #define _LINKLIST_H_ 3 4 #define SUCCESS 100 5 #define FAILURE 101 6 7 typedef int DataType; 8 9 struct node 10 { 11 DataT...

2018-02-08 20:43:02 451

原创 数据结构——链栈

(一)头文件 1 #ifndef _LINKSTACK_H_ 2 #define _LINKSTACK_H_ 3 4 #define SUCCESS 1000 5 #define FAILURE 1001 6 7 typedef int DataType; 8 9 struct node //表示结点的信息...

2018-02-08 20:36:09 311

原创 数据结构——队列

队列是一种只允许在一段进行插入操作,在另一端进行删除操作的线性表。严格来讲就是比较特殊的线性表。(1)队列与栈的区别?相同点:1.都是线性结构。2.插入操作都是限定在表尾进行。3.都可以通过顺序结构和链式结构实现。、4.插入与删除的时间复杂度都是O(1),在空间复杂度上两者也一样。5.多链栈和多链队列的管理模式可以相同。不同点:1.删除数据元素的位置不同

2018-02-06 17:35:12 358

原创 大端小端的判别以及如何进行交换

Big endian和Little enddian的代表就是Motorola的PowerPC系列CPU和Intel的x86系列CPU。PowerPC系列采用big endian方式存储数据,而x86系列则采用little endian方式存储数据。两者主要不同在于存放数据顺序的不同。所谓Big endian就是从低地址到高地址存放高字节到低字节,地址第一个字节是高字节,但是Little end...

2018-02-06 11:20:28 591

原创 数据结构——链表

头文件 1 #ifndef _LINKLIST_H_ 2 #define _LINKLIST_H_ 3 4 #define SUCCESS 100 5 #define FAILURE 101 6 7 typedef int DataType; 8 9 struct node 10 { 11 Data

2018-02-03 22:14:23 355

原创 参数交换实现的3种方法

1,引入第三个参数 1 #include 2 int main() 3 { 4 int i = 1,j = 2; 5 int tmp; 6 7 tmp = i; 8 i = j; 9 j = tmp; 10 printf("%d %d\n", i, j); 11 }2,加减法 1 #include

2018-02-02 18:45:54 364

转载 Linux C 基础简答题 2

(1)数组和指针的区别?(1)空间分配指针是动态分配空间,通过malloc在堆上分配所需要的空间,分配的空间不一定连续,在使用完之后需要调用free()来释放分配空间。而数组是静态分配空间,在全局变量区或者栈上分配空间,分配的空间是连续的,局部变量在生命周期结束后自动释放,全局变量在程序结束完自动释放。(2)访问效率指针是通过地址间接访问,而数组是直接访问数值。因此指针的访问效率低,数

2018-02-02 16:33:54 285

原创 趣味问题 约瑟夫圈的数组求解方法

假设n个人围成一个圈,从1开始报数,到3就把报数的人踢出,然后从1开始,一直循环下去,直到最后一个人,请问这个 人是第几号人?这就是约瑟夫圈问题,这个问题的求解方法比较多,今天介绍一下它的数组求解方法。 1#include 2 int main() 3 { 4 int num = 0,out = 0,i = 0,n; //num为报号,到3清零;ou

2018-02-02 15:08:07 402

转载 Linux C 基础简答题 1

(1)系统调用和库函数的区别?库函数是语言本身的一部分,而系统函数是内核提供给应用程序的接口,属于系统的一部分。函数库调用是语言或应用程序的一部分,而系统调用是操作系统的一部分。用户应用程序访问并使用内核所提供的各种服务的途径即是系统调用。在内核和用户应用程序相交界的地方,内核提供了一组系统调用接口,通过这组接口,应用程序可以访问系统硬件和各种操作系统资源。 1.系统调用是为了

2018-01-31 16:55:26 575

原创 趣味题目 二的1000次方求解

#includeint main(){ int i = 0; int j = 0; int a[1000]; //预留1000个元素,从小到大,按个十百千万的顺序一直排列 for(i = 0; i < 1000;i++) //除了a[0]为1,其他都是0 { a[i] = 0; } a[1] = 1; for(i = 0

2018-01-31 15:12:25 1048

原创 C语言 指针

指针使用的三个步骤定义指针变量;给指针变量赋值;使用指针创建运算;注意:1,指针只能指向同类型的变量,如int类型的指针只能指向int(1)如何避免野指针?野指针指向一个已删除的对象或未申请访问受限内存区域的指针。野指针的出现主要有两种情况,一,指针变量未初始化,这个可能是比较常见的,如int *p;*p = a;在定义指针时没有明确缺省值,导致指针乱指,导致出现段错误

2018-01-29 12:03:58 212

原创 C语言 函数 数组

(1)static在修饰main和普通函数中的变量时,都是修饰局部变量,为什么普通函数中的变量可以保持,main中变量不保持?static修饰局部变量时,变量存放在栈区,生命周期随着语句块执行结束而结束。但使用static修饰变量存放在静态数据区,其生命周期持续到程序结束。以上有个概念,就是语句块结束和程序结束是不同的,对static修饰的普通函数中的变量而言,语句块结束但是程序并没有结束

2018-01-25 22:01:26 2822

原创 C语言 数据类型解读

(1)如何完成不同数据类型之间的强制转换?int a=(int)ch,将字符变量强制转换为整形变量;char ch1=(char)a,将整形变量强制转换为字符型变量;char *p=(char*)a将整形变量强制转换为字符型指针变量。主要是要把(类型说明符)表达清楚。(2)形参和实参的区别?实参是属于主调函数的局部变量,形参是被调函数的局部变量。形参是定义函数时使用的参数,作用在于当该

2018-01-23 22:17:28 337

原创 Linux常用命令理解

1.文件处理(1)ln中硬链接和软链接有什么区别?硬链接是通过索引节点进行连接,在系统中所有文件都有一个索引节点,而硬链接就是指向这个索引节点。而软链接就是和Windows里面的快捷方式差不多,文本信息里面包含了连接内容的地址信息。(2)如何辨别文件类型?file命令可以辨别目录,脚本,英文文件,ELF可执行文件,DOS可执行文件,C语言源文件等,具体格式为file 参数,参数

2018-01-23 16:15:16 231

原创 linux 常用命令

嵌入式:以应用为中心,计算机技术为基础,软硬件可裁剪,专用计算机系统。一,目录简介/bin:常用二进制文件; /sbin:管理员使用的二进制文件;/boot:Linux启动文件;/dev:设备文件(Linux里面一切皆为文件。比如硬盘在里面也是文件,而不是设备);/etc:配置文件;/home:默认用户目录,存放用户数据;/root:管理员目录,存放管理员数

2018-01-23 12:53:05 7475

linux下UDP通讯代码

linux下UDP通讯代码,包括服务器和客户端,UDP协议全称是用户数据报协议 ,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。

2018-04-07

空空如也

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

TA关注的人

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