- 博客(32)
- 收藏
- 关注
原创 类和对象 封装 点和圆的关系
#include<iostream>using namespace std;//点和圆关系案例//点类class Point{public: //设置X坐标 void setX(int x) { m_X = x; } //获取X坐标 int getX() { return m_X; } //设置Y坐标 void setY(int y) { m_Y = y; } //获取Y坐标 int getY() { return m_Y; }...
2020-10-11 14:49:29
476
原创 在C++中 struct和class权限访问的不同
#include<iostream>using namespace std;class C1{ int m_A; //默认权限是私有};struct C2{ int m_B; //默认权限是公共};int main(){ //struct 和 class的区别 //struct 默认权限是公共public //class 默认权限是私有private C1 c1; C2 c2; //c1.m_A=100; //在class里默认权限为私有,因此类外不可.
2020-10-06 19:10:44
204
原创 类和对象----封装
封装是C++面向对象三大特性之一封装的意义:将属性和行为作为一个整体,表现生活中的事物将属性和行为加以权限控制封装意义一:在设计类的时候,属性和行为写在一起,表现事物语法:class 类名{访问权限:属性/ 行为};eg:设计一个圆类,求圆的周长#include<iostream>using namespace std;const double PI = 3.14;//圆周长公式:2*PI*r//class代表设计一个类,类后面紧跟着的就是类名称c
2020-10-06 17:03:58
144
原创 解析函数和构造函数
解析函数和构造函数对象的初始化和清理也是两个非常重要的安全问题。一个对象或者变量没有初始状态,对其使用后果是未知的。同样的使用完一个对象或变量,没有及时清理,也会造成一定的安全问题。C++利用了构造函数和解析函数解决上述问题,这两个函数将会被编译器自动调用,完成对象初始化和清理工作。对象的初始化和清理工作是编译器强制要求我们做的事情,因此如果我们不提供构造和析构,编译器会提供。编译器提供的构造函数和析构函数是空实现。构造函数:主要作用在于创建对象时为对象的成员属性赋值,构造函数由编译..
2020-07-16 10:41:14
739
原创 C++函数提高
C++函数提高1.函数的默认参数在C++中,函数的形参列表中的形参是可以有默认值的。语法:返回值类型函数名 (参数 =默认值){}#include<iostream>using namespace std;/*函数的默认参数如果我们自己传入数据,就用自己的数据,如果没有,那么用默认值。语法:返回值类型 函数名 (形参 = 默认值){}注意事项:1.如果某个位置已经有了默认值,那么从这个位置往后,从左到右都必须有默认值 2.如果函数声明有默认..
2020-06-30 15:15:51
162
原创 C++中的引用
C++中的引用一.引用的基本语法作用:给变量取名语法:数据类型 &别名 =原名int main(){ int a = 10; int &b = a; cout << "a = " << a << endl; cout << "b = " << b << endl; cout << endl; b = 100; cout << "a = " <&.
2020-06-29 17:17:58
160
原创 程序的内存模型 内存四区
程序的内存模型(内存四区),C++程序在执行时,将内存大方向划分为4个区域:在程序编译后,生成了exe可执行程序,未执行该程序前分为两个区域(代码区和全局区)代码区:存放函数体的二进制代码,由操作系统进行管理存放CPU执行的机器指令。代码区是共享的,共享的目的是对于频繁被执行的程序,只需要在内存中有一份代码即可。代码区是只读的,使其只读的原因是防止程序意外地修改了它的指令全局区:存放全局变量和静态变量以及常量全局变量和静态变量存放在此全局区还包含了常量区,字符串常量和其.
2020-06-28 10:55:32
287
原创 结构体应用案例
结构体应用案例结构体应用案例:案例描述:设计学生和老师的结构体,其中老师的结构体中有老师的姓名个一个存放5名学生的数组作为成员,学生成员结构体中有姓名,考试分数。创建数组存放3位老师,通过函数最终给每个老师及所带的学生赋值,最终打印出老师数据以及所带的学生数据。源代码:#include<iostream>using namespace std;#include<string>#include<Ctime>void fuzhiSpace(stru
2020-06-22 17:00:58
567
原创 结构体中添加const关键字来防止误操作
1.未添加const关键字void printArry(struct MyStruct * stu){ stu->age = 23; cout << "打印函数输出" << endl; cout << "姓名:" << stu->name << " 年龄:" << stu->age << " id:" << stu->id << endl;}在未添加co
2020-06-19 16:51:10
990
原创 结构体做函数参数
结构体做函数参数作用:将结构体作为参数向指针中传递传递方式有2种:(1)值传递:在值传递中,修改形参,实参不会改变/*打印输出函数*///1.值传递void printStudent(struct student stu){ stu.age = 40; //在值传递中,修改形参,实参不会改变 cout << "值传递子函数中:" << endl; cout << "姓名: " << stu.name <&l
2020-06-19 13:30:03
440
原创 结构体嵌套结构体
结构体嵌套结构体:#include<iostream>using namespace std;#include<string>/*1.定义一个结构体*/struct student{ string name; int age; int score;};/*1.结构体嵌套*/struct teacher{ string name; int id; int age; struct student stu;
2020-06-19 11:32:09
1787
原创 结构体指针
通过指针访问结构体中的成员,利用符号 -> 可以通过结构体指针访问结构体属性。#include<iostream>using namespace std;#include<string>/*1.结构体指针*/struct MyStruct{ string name; int age; int score;};int main(){ /*创建学生结构体变量*/ struct MyStruct s1 = { "小叶
2020-06-19 10:52:43
228
原创 结构体数组
结构体数组:将自定义的数组放到结构体中方便维护语法:struct 结构体名 数组名[元素个数] = {{},{},.....{} }#include<iostream>using namespace std;#include<string>/*1.定义一个结构体*/struct student{ string name; //姓名 int age; //年龄 int score; //分数};int main(){/*2.创建结构体数组*/ s
2020-06-19 10:25:55
383
原创 通过结构体创建变量的三种方法
通过结构体创建变量的三种方法:1.struct结构体名 变量名/*1. struct student s1给S1属性赋值,通过.访问结构体变量中的属性*/ struct student s1; s1.name ="小李"; s1.age = 18; s1.score = 100; cout << " 姓名: " << s1.name << " 年龄: " << s1.age << " 分数: " << s1.s
2020-06-19 09:57:42
2277
原创 封装一个函数,利用冒泡排序实现,实现对整形数组的升序排序
封装一个函数,利用冒泡排序实现,实现对整形数组的升序排序。#include<iostream>using namespace std;void print_arr(int* arr, int len);void mp(int* arr, int len);/*冒泡排序函数*/void mp(int * arr,int len){ for (int i = 0; i < len - 1; i++) { for (int j = 0; j < len - 1
2020-06-18 22:23:34
1962
1
原创 利用指针的偏移来遍历数组
利用指针的偏移来遍历数组#include<iostream>using namespace std;int main(){ int arr[] = { 8,5,8,6,2,5 }; int *p = arr; for (int i = 0; i < 6; i++) { cout << "遍历指针指针偏移后输出" << endl; cout << *p << endl; p++; } return 0;
2020-06-17 14:06:41
414
原创 const修饰指针的三种情况
const修饰指针的三种情况:1.const修饰指针----常量指针2.const修饰指针----指针常量3.const既修饰指针又修饰常量4.总结:看const右侧紧跟着的是指针还是指针常量 ,是指针就是常量指针,是常量就是指针常量。5.代码#include<iostream>using namespace std;int main(){ int a = 10; int b = 10; /* 1.const修饰指针 常量指针*/ .
2020-06-17 13:11:46
385
原创 指针的定义和使用
#include<iostream>using namespace std;int main(){ /*定义一个指针*/ int a = 10; /*指针定义的语法: 数据类型*指针变量名*/ int* p; p = &a; cout << "a的地址为:" << &a << endl; cout << "指针p为:" << p << endl; /*可以通过解引用的方式来找到指针.
2020-06-16 17:00:48
200
原创 C++实现元素逆置
#include <iostream>#include<ctime>using namespace std;int main(){ int arr[5] = { 1,2,3,4,5 }; cout << "元素逆置前" << endl; for (int i=0; i < 5; i++) { cout << arr[i] << endl; } int start = 0; int end = si..
2020-06-13 12:35:01
748
原创 推挽输出和开漏输出
推挽输出:输出高低电平输出 0 时,N-MOS 导通,P-MOS 高阻,输出0。输出 1 时,N-MOS 高阻,P-MOS 导通,输出1(不需要外部上拉电路)。特点:(1)可以输出高低电平,用于连接数字器件,高电平由VDD(+)决定,低电平由VSS决定(-)。(2)推挽结构指两个三极管受两路互补的信号控制,总是在一个导通的时候另外一个截止,优点开关效率效率高,电流大,驱动能力...
2019-09-29 17:40:03
565
1
原创 学习网站推荐!
panzoid 片头制作网站 https://panzoid.com/ 注:详细制作方法请参考bilibili willtvremove 在线抠图网站 https://www.remove.bg/ 注:告别PS繁琐操作字体家 免费字体下载网站 https://www.zitijia.com/ 注:免费商用字体idata 论文下载网站 https://www.c...
2019-08-18 18:07:25
278
原创 Python3.7在 Geany下编译出现SyntaxError: Non-UTF-8 code starting with '\xb3'错误及实例化方法时提示没有实参的解决方法。
SyntaxError: Non-UTF-8 code starting with '\xb3' in file jj.py on line 5 错误:解决方法:在开头加 #coding=gbk问题描述:实例化方法时提示没有实参(takes no arguments)解决方法:函数__init__(),字母 “init” 两侧有两个' _ '。...
2019-07-19 21:07:37
3364
原创 基于ESP8266-12f 最小系统接线说明
本人在学习ESP8266-12f系列时候,需要搭载最小系统,其中参考很多关于接线的资料说明,发现资料里面所讲的看似大体相同,但还是有些小细节略有不同之处,下面我会依次列举出,最后在分享出我亲测成功的案例!希望对初学者有所帮助!1.安信可淘宝官网ESP8266-12F是ESP8266-12的增强版,完善外围电路,四层板板工艺,增强阻抗匹配,信号输出更佳,无论是稳定性还是抗干扰能力,PCB天线...
2019-06-13 16:22:10
36693
4
原创 ESP8266 12F GPIO输出,调用延时函数实现LED 1s闪烁
(1)管脚功能选择(注意:参数1【PIN_NAME】管脚名、参数2【FUNC】管脚功能)Eg: PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO4_U,FUNC_GPIO4);// GPIO4设为IO口(2)将相应管脚设为输出模式,并输出对应电平(参数1【gpio_no】、参数2:输出电平)Eg: GPIO_OUTPUT_SET(GPIO...
2019-05-30 23:04:08
2489
原创 ESP8266 12f 之看门狗
non-OS SDK 不⽀持抢占任务或进程切换。因此开发者需要⾃⾏保证程序的正确执⾏,⽤户代码不能⻓期占⽤ CPU否则会导致看⻔狗复位,ESP8266 重启。如果某些特殊情况下,⽤户线程必须执⾏较⻓时间(⽐如⼤于 500 ms),建议经常调⽤ system_soft_wdt_feed() API 来喂软件看⻔狗,⽽不建议禁⽤软件看⻔狗。打印输出成功,如果再次期间,不喂狗8266会不断...
2019-05-30 22:49:40
4570
原创 ESP8266 12F SDK中的MakeFile文件
打开ESP8266的SDK后,我们会发现有很多的文件夹,打开文件夹后我们会发现里面许多的子文件夹里面都会有一个MakeFile文件那么这个MakeFile文件在各个文件夹里面到底扮演着怎样的角色呢?MakeFile文件是给编译器看的,告诉编译器/链接哪些文件,[.c],[.h]文件存放的位置等。【Makefile】文件的位置一般有:(1)工程根目录下(2)app根目录下(3)....
2019-05-30 21:15:54
252
原创 ESP8266 12F UART
如何调用API 添加源文件在串口输出中调用os_printf()函数就可以实现字符串输出功能,详细请参考API文档代码示例:串口调试助手示例:注意:默认从UART_0打印 //一般常用的就是UART_0 波特率默认值==74880(晶振26MHZ:74880) 数据格式: 数据位=8,停止位1,无...
2019-05-30 20:56:31
1424
原创 ESP8266 SDK编程的程序架构和注意事项
程序架构:和普通单片机程序的比较(1)普通单片机的程序运行时基于“主循环”的方式Main.c文件中:Int main(void){初始化…………… //IO口,定时器,设置中断………..While(1){ ……..}Return 0;}Void xxx_interrupt(void) //中断处理函数{………………...
2019-05-30 20:44:21
1223
原创 基于ESP8266-12F Non-OS SDK 工程模板的创建全过程(基于2.2版本)
为了开发方便,我们可以在下载了SDK后新建一个工程模板,模板里面删除了许多不必要的文件,我们可以在模板里面添加自己的工程,大大提高的开发的效率!(详细步骤请移步安信可官网,里面有说明文档)https://wiki.ai-thinker.com/ai_ide_use完成上述操作后,我们删除Demo里面写的一些代码作为我们的工程模板其中注明的2个函数要保留,将user_init(void...
2019-05-30 20:35:39
508
原创 C语言中的指针格式输出
C语言的格式输出%c 单个字符 %s 字符串%p 指针的值%u 十进制无符号整形%f 浮点数%e 指数形式的浮点数%x, %X 无符号以十六进制表示的整数 %0 无符号以八进制表示的整数 %g 自动选择合适的表示法注: "/n"是换行键(在 printf输出函数中加入的话,利于显示结果,否则连续输出都连着,不好区分)eg:printf("abc\n");printf("def");输出就是:abc...
2018-06-09 16:03:27
5724
原创 51单片机+ESP8266无线通讯点亮LED灯
实战经验分享硬件: 51单片机 ESP8266-01模块 USB转TTL DCDC降压器 干电池 面包板 杜邦线若干编程软件:keil1.ESP8266的三种工作模式(1)AP模式(模块作为热点,可以发散出wifi信号,实现手机或电脑直接与模块通讯,实现局域网无线控制)(2)STA模式(模块通过路由器连接互联网,手机或电脑通过互联网实现对设备的远程控制)(3)STA+AP模式(两种模式的共存即可通...
2018-06-07 21:52:59
14085
9
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人