自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 跑马灯实验

库函数版本硬件连接(在开发指南中寻找对应元件的连接原理图)GPIO库函数头文件:stm32f10x_gpio.h源文件:stm32f10x_gpio.c1个初始化函数:void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);作用:初始化一个或者多个IO口(同一组)的工作方式和速度。该函数主要是操作GPIO_CRL(CRH)寄存器,在上拉或者下拉的时候有设置BSRR或者BRR寄存器 GPIO_InitT

2021-04-12 22:59:10 181

原创 GPIO工作原理

STM32引脚说明STM32F103ZET6 (GPIOA,GPIOB—GPIOG)- 一共有7组IO口- 每组IO口有16个IO- 一共16X7=112个IOGPIO基本结构GPIO工作方式4种输入模式:输入浮空输入上拉输入下拉模拟输入4种输出模式:开漏输出开漏复用功能推挽式输出推挽式复用功能3种最大翻转速度:-2MHZ-10MHz-50MHzGPIO的输入工作模式1—输入浮空模式一般多用于外部按键输入。浮空输入状态下,IO 的电平状态是不确定的,完全由外

2021-04-11 21:45:45 592

原创 STL—函数对象

函数对象函数对象概念概念:重载函数调用操作符的类,其对象常称为函数对象函数对象使用重载的()时,行为类似函数调用,也叫仿函数本质:函数对象(仿函数)是一个类,不是一个函数函数对象使用特点:函数对象在使用时,可以像普通函数那样调用, 可以有参数,可以有返回值函数对象超出普通函数的概念,函数对象可以有自己的状态函数对象可以作为参数传递#include <string>//1、函数对象在使用时,可以像普通函数那样调用, 可以有参数,可以有返回值class MyAd

2021-01-30 17:31:14 313 1

原创 set容器、map容器

set/ multiset 容器set基本概念简介:所有元素都会在插入时自动被排序本质:set/multiset属于关联式容器,底层结构是用二叉树实现。set和multiset区别:set不允许容器中有重复的元素multiset允许容器中有重复的元素set构造和赋值构造:set st; //默认构造函数:set(const set &st); //拷贝构造函数赋值:set& operator=(const set &st); //重载等号

2021-01-29 22:18:39 165

原创 stack容器、queue容器、list容器

stack容器stack 基本概念概念:stack是一种先进后出(First In Last Out,FILO)的数据结构,它只有一个出口栈中只有顶端的元素才可以被外界使用,因此栈不允许有遍历行为栈中进入数据称为 — 入栈 push栈中弹出数据称为 — 出栈 popstack 常用接口功能描述:栈容器常用的对外接口构造函数:stack stk; //stack采用模板类实现, stack对象的默认构造形式stack(const stack &stk); //拷贝构造函数赋

2021-01-28 16:47:58 96

原创 deque容器

deque容器基本概念功能:双端数组,可以对头端进行插入删除操作deque与vector区别:vector对于头部的插入删除效率低,数据量越大,效率越低deque相对而言,对头部的插入删除速度回比vector快vector访问元素时的速度会比deque快,这和两者内部实现有关deque内部工作原理:deque内部有个中控器,维护每段缓冲区中的内容,缓冲区中存放真实数据中控器维护的是每个缓冲区的地址,使得使用deque时像一片连续的内存空间deque容器的迭代器也是支

2021-01-27 21:06:58 77

原创 vector容器

vector基本概念功能:vector数据结构和数组非常相似,也称为单端数组vector与普通数组区别:不同之处在于数组是静态空间,而vector可以动态扩展动态扩展:并不是在原空间之后续接新空间,而是找更大的内存空间,然后将原数据拷贝新空间,释放原空间vector容器的迭代器是支持随机访问的迭代器vector构造函数功能描述:创建vector容器函数原型:vector v; //采用模板实现类实现,默认构造函数vector(v.begin(), v.end

2021-01-27 20:06:12 110

原创 string容器

string基本概念本质:string是C++风格的字符串,而string本质上是一个类string和char * 区别:char * 是一个指针string是一个类,类内部封装了char*,管理这个字符串,是一个char*型的容器。特点:string 类内部封装了很多成员方法例如:查找find,拷贝copy,删除delete 替换replace,插入insertstring管理char*所分配的内存,不用担心复制越界和取值越界等,由类内部进行负责string构造函数构造函数原型:

2021-01-26 19:54:36 70

原创 初识STL

STL基本概念STL(Standard Template Library,标准模板库)STL 从广义上分为: 容器(container) 算法(algorithm) 迭代器(iterator)函数对象(function object)容器和算法之间通过迭代器进行无缝连接。STL 几乎所有的代码都采用了模板类或者模板函数STL六大组件STL大体分为六大组件,分别是:容器、算法、迭代器、仿函数、适配器(配接器)、空间配置器容器:各种数据结构,如vector、list、deque、set、map等

2021-01-26 16:56:40 105

原创 模板

1.1 模板的概念模板就是建立通用的模具,大大提高复用性模板的特点:模板不可以直接使用,它只是一个框架模板的通用并不是万能的1.2 函数模板C++另一种编程思想称为 泛型编程 ,主要利用的技术就是模板C++提供两种模板机制:函数模板和类模板1.2.1 函数模板语法函数模板作用:建立一个通用函数,其函数返回值类型和形参类型可以不具体制定,用一个虚拟的类型来代表。语法:template函数声明或定义12解释:template — 声明创建模板typename — 表面其后面的

2021-01-26 15:56:39 240

原创 文件数据

文件操作程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放通过文件可以将数据持久化C++中对文件操作需要包含头文件 < fstream >文件类型分为两种:文本文件 - 文件以文本的ASCII码形式存储在计算机中二进制文件 - 文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂它们操作文件的三大类:ofstream:写操作(从缓存output写到文件中)(output file steam)ifstream: 读操作(从文件中读取input

2021-01-19 15:31:21 286

原创 多态

多态的基本语法多态分为两类静态多态: 函数重载 和 运算符重载属于静态多态,复用函数名动态多态: 派生类和虚函数实现运行时多态静态多态和动态多态区别:静态多态的函数地址早绑定 - 编译阶段确定函数地址动态多态的函数地址晚绑定 - 运行阶段确定函数地址案例://动物类class Animal{public: //Speak函数就是虚函数 //函数前面加上virtual关键字,变成虚函数,那么编译器在编译的时候就不能确定函数调用了。 virtual void speak()

2021-01-18 17:52:19 109

原创 继承

继承的基本语法继承的语法:class 子类 : 继承方式 父类继承实现://公共页面class BasePage{public: void header() { cout << "首页、公开课、登录、注册...(公共头部)" << endl; } void footer() { cout << "帮助中心、交流合作、站内地图...(公共底部)" << endl; } void left() { cout <&lt

2021-01-18 13:56:04 94 1

原创 运算符重载

加号运算符重载作用:实现两个自定义数据类型相加的运算class Person {public: Person() {}; Person(int a, int b) { this->m_A = a; this->m_B = b; } //成员函数实现 + 号运算符重载 Person operator+(const Person& p) { Person temp; temp.m_A = this->m_A + p.m_A; temp.m_B =

2021-01-14 15:13:33 147

原创 友元

在程序里,有些私有属性 也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术友元的目的就是让一个函数或者类 访问另一个类中私有成员友元的关键字为 friend友元的三种实现全局函数做友元类做友元成员函数做友元全局函数做友元class Building{ //告诉编译器 goodGay全局函数 是 Building类的好朋友,可以访问类中的私有内容 friend void goodGay(Building * building);public: Buildin

2021-01-13 19:14:34 71

原创 通讯录管理系统

实现功能1.查找联系人2.添加联系人3.删除联系人4.显示联系人5.清空联系人6.修改联系人0.退出通讯录代码#define max 1000struct contact{ string c_name; int c_number;};struct addressbook{ struct contact contactArray[max]; int m_size=0;};//菜单显示功能void showmenu(){ cout << "菜单:"

2021-01-13 16:29:23 89

原创 友元

在程序里,有些私有属性 也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术友元的目的就是让一个函数或者类 访问另一个类中私有成员友元的关键字为 friend友元的三种实现全局函数做友元类做友元成员函数做友元全局函数做友元class Building{ //告诉编译器 goodGay全局函数 是 Building类的好朋友,可以访问类中的私有内容 friend void goodGay(Building * building);public: Buildin

2021-01-12 23:06:49 79

原创 C++对象模型和this指针

成员变量和成员函数分开存储在C++中,类内的成员变量和成员函数分开存储只有非静态成员变量才属于类的对象上class person { int m_A;//非静态成员变量 属于类的对象上 static int m_B;//静态成员变量 不属于类的对象上 void func1() {}//非静态成员函数 属于类的对象上 static void func2() {}//静态成员函数 不属于类的对象上};int person::m_B = 0;void test01(){ person

2021-01-11 16:12:25 69

原创 类与对象(一)

类与对象定义类的语法形式:class 类名称{public:外部接口protected:保护型成员private: 私有成员};eg:class clock{ public://类里面的函数默认私有 void SetTime(int H=0,int M=0,int S=0); void ShowTime(); int hour,min,sec;}; ...

2021-01-11 15:08:28 229

原创 判断点和圆位置关系

方法一class point {public: void setxy(int x,int y) { p_x = x; p_y = y; } int getx() { return p_x; } int gety() { return p_y; }private: int p_x,p_y;};class Circle{public: void setR(int r)//设置半径 { c_r = r; } void setxy(int x, int

2021-01-11 14:48:08 611

原创 冒泡排序和选择排序

#include<iostream>using namespace std;int main(){ int arr[] = { 4,6,2,1,7,9 }; for (int i = 0; i < 5; i++) { for(int j=0;j<5-i;j++) if (arr[j] >arr[j+1]) { int temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } .

2021-01-11 14:19:48 76

原创 函数

函数的默认参数函数的形参列表中的形参是可以有默认值的//函数默认参数//如果自己传入数据,就用自己的数据,如果没有,那么用默认值//语法:返回值类型 函数名(形参=默认值){}int func(int a, int b = 20, int c = 30){ return a + b + c;}/*notes:1.如果每个位置已经有了默认参数,那么从这个位置往后都必须有默认值2.如果函数声明有默认参数,函数实现就不能有默认参数(声明和实现只能有一个有默认参数)*/int main()

2021-01-10 18:09:02 79

原创 引用

1.1引用的基本使用语法:数据类型 &别名=原名int main() { int a = 10; int& b = a; b = 20; cout << "a= "<<a << endl; cout << "b= "<< b << endl; system("pause");}运行结果1.2引用的注意事项1.引用必须初始化 int &b;//错误的2.引用一旦初始化后就不可

2021-01-09 16:31:45 66

原创 内存的分区模型

**内存大方向化为4个区域**代码区:存放函数体的二进制代码,由操作系统进行管理全局区:存放全局变量、静态变量及常量栈区:由编译器自动分配释放,存放函数的参数值、局部变量堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收1.1程序运行前代码区:1.存放CPU执行的机器指令 2.代码区是共享的(节约内存)3.代码区是只读的(防止意外修改指令)全局区:1.全局变量和静态变量均存放于此 2.全局区还包括常量区、字符串常量及其他常量 3.该区域数据在程序结束后由操作系统释放#i

2021-01-03 21:14:17 118

原创 2020-10-16

c++基础结构体的定义和使用声明一个表示时间的结构体#include<iostream>using namespace std;struct maytime { int year; int month; int day; int hour; int sec; }s5;int main(){ struct maytime zyy; cout<<"enter year"<<endl; cin>>zyy.year

2020-12-18 12:18:33 161

空空如也

空空如也

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

TA关注的人

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