嵌入式- C语言- 关键字

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++ 把原来变量的值复制到一个临时的存储空间,等运算结束后才会返回这个临时变量的值
  • 前置自增比后置自增效率高
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值