ESP8266接入云平台思路
目的:实现智能终端(手机或平板)远程控制设备
设计思路:将wifi模块连接上能上网的路由器(手机开热点作为路由器也可以),连接远程需要做一些配置,来和云平台对接。之后智能终端和WiFi模块绑定后就可以远程控制设备了。
关键字Volatile
- 表示变量可变,可以被某些编译器未知的因素更改
- 编译器对访问该变量的代码不再进行优化,从而可以提供对特殊地址的稳定访问
- 系统重新从它所在的内存读取数据(当一个线程更新某个volatile声明的变量时,会通知其他的cpu使缓存失效,从而其他cpu想要做更新操作,需要从内存重新读取数据)
- volatile用处:
– 并行设备的硬件寄存器(如果要进行反复读操作,就需要volatile,否则编译器只对地址读一次)
– 中断服务程序中修改供其他程序检测的变量:当变量在触发某中断程序中修改,而编译器判断主函数里面没有修改该变量,因此可能只执行一次从内存到某寄存器的读操作,而后每次只会从该寄存器中读取变量副本,使得中断程序的操作被短路。
– 多任务环境下各个任务间共享的标志
关键字static
- 隐藏:只能被当前文件使用,其他源文件不可见
- 只被初始化一次,保持变量内容的持久
- 默认初始化为0
- 存储在全局数据区
- C++特有:静态数据成员/成员函数–>属于一个而不属于该类的任何特定对象
new/delete 和 malloc/free
- new/delete是C++中的操作符,而malloc和free是标准库函数
- malloc/free 是库函数而不是运算符,所以不再编译器的控制范围内,不能够自动调用构造函数和析构函数,它们知识为变量分配内存和释放内存,而new/delete在为对象申请分配内存空间是可以自动调用构造函数和完成初始化
- new是自由存储区上分配内存,而malloc是堆上分配内存
- new返回的是指定类型的指针,并且可以自动计算所申请内存的大小,而malloc需要我们计算申请内存的大小,并在返回时强行转换为实际类型的指针
sizeof 和 strlen
- sizeof: 计算一个数据类型大小,是一个运算符,关键字,在编译器计算
- strlen: 计算一个指定字符串的长度,在运行时计算
- sizeof会将\0计算在内,而strlen不会
struct 和 union
- 联合体: 所有成员共用一块地址空间。不能同时存在
- 结构体: 所有成员占用空间是累加的,可以同时存在
左值 和 右值
- 左值: 可写(可寻址)
- 右值: 可读
- 左值可以作为右值,但右值不一定是左值
短路运算
- || : 如果前面已经判断为true了,则整个语句为true,不需要执行后面的语句
- && : 如果前面有一个语句为false,则整个语句为false,不需要执行后面的语句
++a 和 a++
- a++ 把原来变量的值复制到一个临时的存储空间,等运算结束后才会返回这个临时变量的值
- 前置自增比后置自增效率高