自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 资源 (1)
  • 问答 (4)
  • 收藏
  • 关注

原创 一道华为编程题

题目:有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝?代码:#include <stdio.h>int func(int n){ ..

2021-08-24 13:00:35 320

原创 一道华为笔试题

目录题目:代码:执行结果:题目:明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作(同一个测试用例里可能会有多组数据(用于不同的调查),希望大家能正确处理)。注:测试用例保证输入参数的正确性,答题者无需验证。测试用例不止

2021-08-23 23:46:36 458

原创 关于UART、IIC、SPI的一些总结

目录什么是串行?什么是并行?什么是同步?什么是异步?UART通信协议IIC总线SPI总线什么是串行?串行就是用一根数据线,依次传输多位数据什么是并行?并行就是,如果要传输8位数据,那么就用8根数据线,每个数据线传输一位数据什么是同步?有一根SCL时钟线,保证收发数据双方时钟的同步比如IIC、SPI就是同步通信什么是异步?没有用于同步收发双方的时钟线比如UART就没有时钟线,它就是异步通信UART通信协议是一种通用的串行、异步通信..

2021-08-22 16:32:53 1434

原创 一道链表相加的题

目录题目:代码:题目:代码:#include <stdio.h>#include <stdlib.h>struct List{ int val; struct List* next;};void printfList(struct List* head){ while(head){ printf("%d",head->val); .

2021-08-19 21:07:39 156

原创 对于指针的一些小总结

下面这段代码一开始我以为结果会是:可以正常输出 'hello'。#include <stdio.h>#include <stdlib.h>#include <string.h>void func(char* p){ p = (char*)malloc(100); strcpy(p,"hello");}int main(){ char* p = NULL; func(p); ...

2021-08-19 17:35:37 85

原创 sizeof作用于数组和指针以及sizeof和strlen的区别

代码:#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){ char str[] = "hello"; char* p1 = "hello"; char* p2 = "hello"; int size_str = 0; int size_p1 = 0; int size_p2 .

2021-08-16 18:28:56 512

原创 c++之文件操作

目录文件操作文本文件二进制文件文件操作 程序运行时产生的数据都属于临时数据,程序一旦运行结束就会被释放 通过文件可以将数据持久化 c++中对文件操作需要包含头文<fstream> 文件类型分为两种: 1)文本文件 - 文件以文本的ASCII码形式存储在计算机中 2)二进制文件 - 文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂它们 操作文件的三大类: 1)ofstrea...

2021-08-14 16:32:45 523

原创 c++学习之虚析构和纯虚析构

虚析构和纯虚析构 多态使用时,如果子类中有属性开辟到堆区,那么父类指针在释放时无法调用到子类的析构代码 解决方式:将父类的析构函数改为虚析构或者纯虚析构虚析构和纯虚析构共性: 1)可以解决父类指针释放子类对象 2)都需要有具体的函数实现虚析构和纯虚析构区别: 1)如果是纯虚析构,该类属于抽象类,无法实例化对象 2)如果只是虚析构,在没有纯虚函数的前提下,该类还是可以实例化对象的虚析构语法: virtua...

2021-08-14 14:14:37 343

原创 c++学习笔记之纯虚数和抽象类

纯虚函数和抽象类 在多态中,通常父类中虚函数的实现是毫无意义的,主要都是调用子类重写的内容 因此可以将虚函数改为 纯虚函数 纯虚函数语法:virtual 返回值类型 函数名 (参数列表) = 0; 当类中有了纯虚函数,这个类也称为抽象类 抽象类特点: 1)无法实例化对象 2)子类必须重写抽象类中的纯虚函数,否则也属于抽象类 示例: #include <iostream> usi...

2021-08-14 14:11:32 407

原创 c++学习笔记之多态的基本概念

多态的基本概念 多态是C++面向对象三大特性之一 多态分为两类 1)静态多态:函数重载 和 运算符重载属于静态多态,复用函数名 2)动态多态:派生类和虚函数实现运行时多态 静态多态和动态多态区别: 1)静态多态的函数地址早绑定 - 编译阶段确定函数地址 2)动态多态的函数地址晚绑定 - 运行阶段确定函数地址 多态满足条件: 1)有继承关系 2)子类重写父类中的虚函数 多...

2021-08-14 14:09:37 206

原创 视源股份笔试之挖个坑我就跳

今天参加了视源股份的笔试题,真就是别人挖个坑让我挑,我就乖乖的跳,话不多说,分享下我的踩坑记0.0第一道编程题目:对一个字符型数组中的数据进行减1操作。比如输入100,输出99(用c的话,不可以使用atoi等函数)解题思路: 1)首先计算这个数组的长度char c[16] = {'\0'};int len = strlen(c)2)确定这个数组中后几位是'0',到不是'0'哪一位进行字符减1操作,并退出循环while(1){ i...

2021-08-13 22:45:01 2403

原创 c++学习笔记之菱形继承

菱形继承 菱形继承概念: 两个派生类(子类)继承同一个基类(父类) 又有某个类同时继承这两个派生类 这种继承被称为菱形继承,或者钻石继承 动物 羊 驼 草泥马(羊驼) 菱形继承问题: 1)羊继承了动物的数据,驼同样继承了动物的数据,当草泥马使用数据时...

2021-08-11 10:43:34 140

原创 c++学习笔记之多继承语法

多继承语法 c++允许一个类继承多个类 语法:class 子类 : 继承方式 父类1,继承方式 父类2... 注:多继承可能会引发父类中有同名成员出现,需要加作用域区分 注:c++实际开发中不建议使用多继承 示例: #include <iostream> using namespace std; class Base1 { public: Base1()...

2021-08-10 17:52:54 112

原创 c++学习笔记之继承同名成员处理方式

目录继承中的对象模型继承中构造和析构顺序验证代码:继承同名静态成员处理方式验证代码:继承中的对象模型 问题:从父类继承过来的成员,那些属于子类对象中? 1)父类中所有非静态成员属性都会被子类继承下去 2)父类中私有成员属性 是被编译器给隐藏了,因此是访问不到,但是确实被继承下去了继承中构造和析构顺序 子类继承父类后,当创建子类对象,也会调用父类的构造函数 问题:父类和子类的构造和析构顺序是谁先谁后? 继承中的构造...

2021-08-10 13:04:57 137

原创 c++学习笔记之继承方式

继承方式 继承的语法:class 子类 : 继承方式 父类 继承方式一共有三种: 1)公共继承(public) class A : public B 父类(B)中的公共权限和保护权限的内容继承到子类(A)中后,其权限不变,原来是保护在子类中也是保护,原来是公共在子类中也是公共。父类中的私有权限内容,子类继承不到 2)保护继承(protected) class A : protected B 父类(B...

2021-08-10 11:24:10 2583

原创 c++学习笔记之继承基本语法

目录继承继承的基本语法普通实现:继承实现:继承 继承是面向对象三大特性之一 有些类与类之间存在特殊的关系 定义某些类时,下级别的成员处了应有上一级的共性,还有自己的特性 例如:动物-》猫-》咖啡猫 猫除了具有“动物”的共性,还具有猫的特性;咖啡猫除了具有“猫”的公性,还具有咖啡猫的特性 这个时候我们就可以考虑利用继承技术,减少重复代码继承的基本语法 例如我们看到很多网站中,都有公共的头部,公共的底部,甚至公共的左侧列表,...

2021-08-09 15:42:48 101

原创 c++学习笔记之函数调用运算符重载

函数调用运算符重载 1)函数调用运算符()也可以重载 2)由于重载后使用的方式非常向函数的调用,因此称为仿函数 3)仿函数没有固定写法,非常灵活 示例: #include <iostream> using namespace std; class MyOutput { public: void operator()(string name) {...

2021-08-09 14:39:40 115

原创 c++学习笔记之关系运算符重载

关系运算符重载 作用:重载关系运算符,可以让两个自定义类型对象进行对比操作 示例: #include <iostream> using namespace std; class Person { public: Person(string name,int num) { m_name = name; m...

2021-08-09 14:05:45 252

原创 c++学习笔记之赋值运算符重载

赋值运算符重载 c++编译器至少给一个类添加4个函数 1)默认构造函数(无参,函数体为空) 2)默认析构函数(无参,函数体为空) 3)默认拷贝构造函数,对属性进行 值 拷贝 4)赋值运算符operator=,对属性进行值拷贝 如果类中友属性指向堆区,做赋值操作时也会出现深浅拷贝问题 示例: #include <iostream> using namespace std;...

2021-08-09 14:04:39 72

原创 c++学习笔记之递增运算符重载

目录递增运算符重载局部函数前置++重载全局函数前置++重载局部函数后置++重载全部练习代码示例:递增运算符重载 作用:通过重载递增运算符,实现自己的整形数据局部函数前置++重载 示例: //前置++,局部函数写法 //返回值注意是引用类型的,这样就是始终对一个数据进行操作,如果把&去掉,每次返回的都是一个新的 Preson& operator++()...

2021-08-09 12:58:38 445

原创 c++学习笔记之左移运算符重载

左移运算符重载 作用:可以输出自定义数据类型 示例: //只能利用全局函数重载左移运算符 //本质operator<<(cout,P) 简化cout<<P; //链式编程思想,经过简化后-》cout<<p<<p1; 第二个<<之前是一个函数,输入第二个<<之后,第一次的返回值就作为了operator<<(cout,P)的第一个参数。 ...

2021-08-09 09:56:05 248

原创 c++学习笔记之加法运算符重载

运算符重载 运算符重载概念:对已有的运算符重新定义,赋予其另一种功能,以适应不同的数据类型加法运算符重载 作用:实现两个自定义数据类型相加的运算 方法:成员函数重载+号 示例: //成员函数重载 Preson operator+(Preson &p) { Preson temp; ...

2021-08-09 09:50:35 3248

原创 c++之友元

友元 生活中你的家有客厅(Public),有你的卧室(Private) 客厅所有来的客人都可以进去,但是你的卧室是私有的,也就是说只有你能进去 但是呢,你也可以允许你的好闺蜜好基友进去。 在程序里,有些私有属性 也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术 友元的目的就是让一个函数或者类 访问另一个类中私有成员 友元的关键字为 friend 友元的三种实现:全局函数做友元 声明格式:friend...

2021-08-09 09:44:32 73

原创 const修饰成员函数

const修饰成员函数 常函数: 1)成员函数后加const后我们称这个函数为常函数 2)常函数内不可以修改成员属性 3)成员属性声明时加关键字mutable后,在常函数中仍然可以修改 常对象: 1)声明对象前加const称该对象为常对象 2)常对象只能调用常数 示例: #include <iostream> using namespace std;...

2021-08-09 09:41:03 131

原创 空指针访问成员函数

空指针访问成员函数 C++中空指针也是可以调用成员函数的,但是也要注意有没有用到this指针 如果用到this指针,需要加以判断保证代码的健壮性 实例: #include <iostream> using namespace std; class Preson { public: void showClassName() { ...

2021-08-09 09:38:25 92

原创 this指针概念

在C++中成员变量和成员函数是分开存储的 每一个非静态成员函数只会诞生一份函数实例,也就是说多个同类型的对象会公用一块代码 那么问题是:这一块代码是如何区分那个对象调用自己的呢? C++通过提供特殊的对象指针,this指针,解决上述问题。this指针指向被调用的成员函数所属的对象 this指针是隐含每一个非静态成员函数内的一种指针 this指针不需要定义,直接使用即可 this指针的用途: 1)当形参和成员变量同名时,可用this指针...

2021-08-08 20:02:47 140

原创 成员变量和成员函数分开存储

在c++中,类内的成员变量和成员函数分开存储 只有非静态成员变量才属于类的对象上 示例: #include <iostream> using namespace std; //成员变量和成员函数分开存储 class Preson { int m_A; //非静态成员变量,此时计算Preson p的大小,结果为4,说明m_A属于类的对象上的数据 ...

2021-08-08 20:00:19 154

原创 c++之静态成员

静态成员 静态成员就是在成员变量和成员函数前加上关键字static,称为静态成员 静态成员分为: 1)静态成员变量 a.所有对象共享同一份数据 b.在编译阶段分配内存 c.类内声明,类外初始化 2)静态成员函数 a.所有对象共享同一个函数 b.静态成员函数只能访问静态成员变量 示例:#include <iost...

2021-08-08 19:58:47 92

原创 c++之构造函数和析构函数

目录构造函数和析构函数构造函数的分类和调用拷贝构造函数调用时机初始化列表类对象作为类成员构造函数和析构函数 对象的初始化和清理也是两个非常重要的安全问题 一个对象或者变量没有初始化状态,对其使用后果是未知的 同样的使用完一个对象或变量,没有及时清理,也会造成一定的安全问题 c++利用构造函数和析构函数解决上述问题,这两个函数将会被编译器自动调用,完成对象初始化和清理工作。 对象的初始化和清理工作是编译器强制要我们做的事情,因此如果我们不提...

2021-08-08 15:05:39 772

原创 C++封装

封装 1. 封装的意义 封装是c++面向对象三大特性之一 封装的意义: 1)将属性和行为作为一个整体,表现生活中的事物 2)将属性和行为加以权限控制 封装意义一: 在设计类的时候,属性和行为写在一起,表现事物 语法: class 类名{ 访问权限: 属性 / 行为 }; 示例:设计一个圆类,求圆的周长 示例代码: #include ...

2021-08-08 14:57:22 330

原创 函数的默认参数、占位参数和重载

目录函数的默认参数函数占位参数函数重载函数重载注意事项函数的默认参数 在c++中,函数的形参列表中的形参是可以由默认值的。 语法:返回值类型 函数名 (参数 = 默认值){} 注意: 1)如果某个位置参数由默认值,那么从这个位置往后,从左到右,必须都要有默认值 2)如果函数声明有默认值,函数实现的时候就不能有默认参数 3)如果我们自己传入数据,就用自己的数据,如果没有就用默认值 4)如果函数声明...

2021-08-08 14:51:13 518

原创 C++之引用

引用 作用:给变量起别名 引用基本语法: 数据类型 &别名 = 原名 例如: int a = 10; int &b = a; 现在b的地址就是a的地址,改变b地址中的内容相当于改变a地址中的内容 例如: b = 100; 则现在a和b都等于100引用注意事项 1)引用必须初始化 int& b; //这样写是错误的,引用必须一开始就初...

2021-08-08 14:45:25 86

原创 对C++中内存四区和new用法的简单介绍

内存四区:代码区、全局区、栈区、堆区 运行程序前: 在程序编译后,生成了exe可执行文件,未执行程序前分为两个区域 1)代码区: 存放CPU执行的机械指令 代码区是共享的,共享的目的是对于频繁被执行的程序,只需要在内存中又一份代码即可 代码区是只读的,使其只读的原因使防止程序意外的修改了它的指令 2)全局区: 全局变量和静态变量存放在此 ...

2021-08-08 14:34:32 179

原创 C++中几个常用关键字

目录1. continue关键字2. const关键字3. goto语句4. 一个小细节1. continue关键字 作用:在循环语句中,跳出本次循环中余下尚未执行的语句,继续执行下一次循环2. const关键字 作用:将变量设置为常量,使其保持不变 const修饰指针又三种情况: 1)常量指针: const int* p = &a; 指针的指向可以修改,但是指针的值不可以修改...

2021-08-08 14:30:12 284

原创 树莓派基础配置

文章目录一、pandas是什么?二、使用步骤1.引入库2.读入数据总结一、树莓派配置1. 树莓派刷机2.树莓派登录1)HDMI视频线 连接到显示器没什么好说的,一般也不用2)串口登录设备破解:默认情况下,树莓派的串口和蓝牙连接,想办法断开蓝牙连接,把串口用来数据通信具体步骤如下↓:a. 将树莓派上的SD卡用读卡器插在电脑上b.找到 config.txt和 cmdline.txt 这两个文件c.在config.txt文件最后...

2021-08-08 00:41:12 638

原创 Linux基本操作指令

Linux和UNIX的关系及区别详解网址:http://c.biancheng.net/view/707.html一、 Linux发行版ubuntu(嵌入式开发) Fedora(早期嵌入式开发) centOS(web服务器) ArchLinux(用不多) 红旗Linux 红帽Linux Loki Mint二、VI的使用命令行模式:默认次模式,从输入模式回到命令行模式:按esc 输入模式:按i进入(看到insert就能编译了) 退出VI保存代码,命令行模式下按:(冒号)和w

2021-08-06 14:22:13 136

原创 三种滤波器简单解释

高通滤波器原理:滤波是利用电容对特定频率的等效容抗小,近似短路来实现的。电容器的特点就是对直流电表现出的阻抗极大,相当于不通。对交流电,频率越高,阻抗越小总结:电容通交流阻直流,同高频阻低频低通滤波器:电感阻止高频信号通过而允许低频信号通过,信号能够通过电感的滤波器、或者通过电容连接到地的滤波器对于低频信号的衰减要比高频信号小,称为低通滤波器。最简单的低通滤波器由电阻和电容接地组成,如下图:标红解释:电容通高频阻低频,电容接地就会把高频信号引到地那边,而低频信号则会被阻止,进而.

2021-08-06 13:53:27 1991

原创 linux应用层之socket学习笔记

详细讲解请参考博文:https://blog.youkuaiyun.com/qq_37049496/article/details/812565371. 为什么要学习socket应为前面我们学习的通信方式,比如管道,消息队列,共享内存等,都是以来Linux内核实现的,也就意味着只可以进行单机通信,socket网络编程可以通过IP地址,端口号来实现多级之间的通信2. 什么是网络编程网络编程的本质是两个设备之间的数据交换现在的网络编程基本上都是基于请求/响应方式的,也就是一个设备发送请求数据给另外一

2021-08-06 13:46:09 171

原创 Linux应用层之线程学习笔记

1. 什么是线程线程详细介绍请参考博文:https://www.cnblogs.com/xiehongfeng100/p/4620852.html线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一个进程中可以并发多个线程,每条线程并行执行不同的任务典型的UINX/Linux进程可看成只有一个控制线程同一进程中的多条线程将共享该进程中的全部系统资源但同一进程中的多个线程有各自的调用栈,自己的寄存器环境,自己的线程本地存储2. 进程与线程

2021-08-06 13:40:10 121

原创 linux应用层之进程间通信学习笔记

1. 什么是进程间通信进程间通信就是在不同进程之间传播或交换信息单机通信方式:半双工管道(无名管道,命名管道),全双工管道(命名全国双工管道),消息队列,信号量,共享内存多级通信方式:套接字(基于网络),STREAMS2. 什么是半双工,什么是全双工半双工:一方在发数据,另一方只能收数据;一方收数据,另一方只能发数据,双方不能同时发或收数据。就像赛尔号,烈焰猩猩和妙蛙种子对打,烈焰猩猩出招,妙蛙种子只能坐等挨打,反之亦然全双工:双方可以同时收发数据。就像王者荣耀,貂蝉打吕布时

2021-08-06 13:36:56 237

树莓派开发文档笔记.docx

学习树莓派和交叉编译、静动态库、软硬链接、地址总线等的笔记

2021-08-14

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

TA关注的人

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