一. 嵌入式开发为什么要学习C++语言?
回顾:嵌入式开发为什么要学习C语言?
1. 嵌入式软件平台的内核是由C语言实现的。
2. 嵌入式选用C语言也基于C语言的特点:
l C语言的可移植性好,即移植到另一平台上运行时,所需修改的代码少。C语言在不同的软件平台,拥有相同的语法。在不同的硬件平台下同样适用。所以C语言可以在不同体系结构的软硬平台执行。
l C语言灵活紧凑,使用灵活的语法机制,并能直接访问硬件。C语言中,我们可以通过指针控制内存以及寄存器。我们知道汇编和C语言都可以直接访问硬件。但汇编的语法较为简单。因此在复杂的算法中,我们用C语言。而汇编用于初始化(启动方面)。
l 运行效率高。相比其他解释型语言(Java,Python运行时将程序翻译成机器语言),编译型语言——C语言可以直接生成硬件识别的机器码,所以运行效率高。
但C语言也有以下缺点:
C语言没有深思熟虑的设计过程,使用时存在很多灰色地带;
残留量过多,直接利用指针进行内存操作
面向过程程序设计:数据结构+算法 用户需求简单而固定
面向对象程序设计:由现实世界建立软件模型 可适应用户需求的不断变化
(暂时对面对过程和面对对象的形象理解是:面向对象就是对一幢楼的设计,而面对过程就是建成这幢楼的具体实现)
根据以上C语言的缺点和面向过程方法论暴露越来越多缺陷,业界决定引入面向对象的方法,而C++就是一个高效的面向对象语言,并且能兼容已经存在的代码
C++的学习可以强化C语言的编程能力,也可以帮助其他编程语言的学习。
编程开发语言:C
C++ 用于前端+后台开发
Java 开发安卓应用
PHP 用于web开发
python ,shell 脚本语言用于软件测试和网站
C# 开发windows前端开发
OC 开发IOS应用
Go用来开发Android应用
二.C++相关基础知识点
C++支持的编程范式:(编程范式更倾向于哪种规则编程)
过程式 数据抽象 基于对象 面向对象式 函数式 泛型式 模板元形式
设计模式:简单工厂模式 工程模式 适配器模式 代理模式
值语义与对象语义:值语义可以拷贝和赋值,对象语义不可以
C++之父:本贾尼.斯特劳斯特卢普
三.从C到C++的升级
1.申明和定义
C++更强调语言的实用性,所有变量可以在需要使用时定义
2.register变量
C语言:
1. register关键字的作用
register关键字主要是请求编译器将变量尽可能地(由于CPU的寄存器是稀缺资源,所以只能尽可能的存放,不能保证所有数据都能保存在寄存器中)存储在寄存器中,省去了CPU向内存抓去数据的时间,提高程序的运行效率。
2. 什么时候使用register关键字?
一般将频繁使用的变量声明为register变量。
3. register关键字使用注意事项
1) register变量只能修饰局部变量,不能修饰全局变量和函数。(由于全局变量会被多个进程访问,如果将变量定义为register变量,只有当前进程能访问,其他进程都不能访问,所以只能修饰局部变量)。
2) register变量不能用取地址来获取其地址。(由于取地址获取的是内存的地址,而register变量保存在寄存器中)
3) register修饰的变量都是CPU所接受的数据类型
C++:
编译器仍支持register关键字,但C++编译器有自己的优化方式,当编译器发现需要取register变量的地址是,register对变量的声明会无效
3.const关键字
C语言:
1.const关键字的作用
const修饰的变量为只读变量,表示不能通过变量名进行修改,但可以通过变量的空间进行修改。
2.什么时候使用const关键字?
一般用来修饰函数形参,避免在函数实现时修改实参的值,便于调试。
3. const关键字使用注意事项
1) 使用const修饰变量时,变量一定要初始化。
2) 注意哪些函数形参需要使用const关键字(这是函数实现者好的体现,防止函数对实参进行修改)。
实例:
const int *p = #//不能通过p修改其指向空间的值
int * const p = #//不能通过p修改其对应空间的值
(离谁近谁不能修改自身的值)
C++:
const修饰的变量为只读常量
const 对应 const :
cons tint num = 5;
cons tint *p = #