一:概述 1.嵌入式为什么选择C语言开发
| 使用C语言的理由 设计特性 (融合控制特性) 高效性(紧凑且运行速度快) 可移植性(经过很少改动或不经修改就可以在其他系统上运行) |
2.C语言有什么特点 (移植性 访问硬件 运行效率)
| 1.中级语言(高级语言成分和汇编语言功能结合)
2.C允许对位、字节和地址这些计算机功能中的基本成分进行操作,容易移植
3.支持数据类型,却不是强类型语言,允许几乎所有的类型转换
4.仅有3 2个关键字
5.C语言是结构化语言,更易于维护,代码和数据的分离 C语言不允许在函数中定义函数,所以不能称之为通常意义上的块结构语言 C语言的主要结构成分是函数C的独立子程序
6.C语言是程序员的语言(程序生成、修改和现场测试自始至终均由真正的程序员进行 可以用它代替汇编语言 )
7.几乎所有的计算机上都有C语言编译程序,可移植性节省了时间和财力
8.C语言系统都提供了专门的函数库,程序员可以根据不同需要对其进行剪裁
分别编译,所以C语言可使程序员方便地管理大型项目 |
3. C语言有什么劣势(代码复用性 代码维护性 代码扩展性) |
1.C对指针,会犯非常难以追踪的编程错误 2.C的简洁性与其丰富的运算符相组合,可能编写出极难理解的代码 3.面向过程,以功能为中心来设计功能模块,难于维护
4.数据安全有缺陷(表现在数据封装性上)
5.语法限制不严格,变量类型约束不严格,数组下表越界不检查,不提供命名空间,构造函数和析构函数不可用 6.直接靠近硬件操作不安全 |
4.面向结构和面向对象编程特点和区别
| 面向过程 (行为):列出解决问题步骤,用函数分步实现,使用时依次调用 面向对象 (属性):具有一个或多个属性的物体抽象为类
不同:(1)面向过程程序设计方法采用函数(或过程)来描述对数据的操作,函数与数据分离;面向对象程序设计方法将数据和对数据的操作封装在一起。(2)面向过程程序设计方法以功能为中心来设计功能模块,难于维护;而面向对象程序设 计方法以数据为中心来描述系统,更易于维护。(3)面向过程程序的控制流程由程序中预定顺序来决定;面向对象程序的控制流程由运行时各种事件的实际发生来触发,更符合实际需要。(4)面向对象程序设计方法可以利用框架产品(如 MFC,Microsoft Foundation Classes)进行编程。根本差别在于封装之后,面向对象提供了面向过程不具备的各种特性(继承、多态)。
|
5.C语言VS汇编(共同:都能访问硬件 区别)
| 1.汇编语言实质上机器语言的助记符,汇编语言与机器语言是一一对应的,没办法一一对应,需要有编译规则,汇编语言可以直接而灵活地管理包括特殊功能寄存器、通用寄存器、存储单元的每一个字节,甚至是每一个bit,资源利用率更高。C语言对内存的使用及管理功能也是很强大的,但毕竟还是受制于语法。
2.而C语言丰富而实用的语句决定了C语言程序灵活性以及强大的代码组织能力。利用C语言,可以很方便地编写出庞大的工程,在版本管理工具的帮助下,可以很实现多人协作编程。特别是引入RT-OS以后,C语言的程序框架更加灵活了,添加功能(任务)更加轻松。因为,所有的任务的调控可以直接交给操作系统来做,而程序员需要做的是编写任务(含一个或多个功能模块)的内容,以及设置任务的优先级,堆栈数等等
3.汇编语言是低级语言,功能不够丰富,编写程序对程序员的要求也更高,因为,程序员必须能撑握CPU或MCU的内存结构、总线结构、功能模块、堆栈系统、中断资源及机制等等 |
6. C语言之父 | C语言的诞生是现代程序语言革命的起点。今天,C语言依旧在系统编程、嵌入式编程等领域占据着统治地位。C语言就是丹尼斯·里奇开发的。因此,他被称为c语言之父、UNIX之父。 |
7.C语言的标准
| K&R C(标准C),指的是ANSI C,ISO C,C89,C90 1.K&R C主要介绍了以下特色: · 结构(struct)类型 · 长整数(long int)类型 · 无符号整数(unsigned int)类型 · 把运算符=+和=-改为+=和-=。因为=+和=-会使得编译器不知道使用者要处理i = -10还是i =- 10,使得处理上产生混淆。 2.ANSI C ISO C 3.C89 C90 · 增加了真正的标准库 · 新的预处理命令与特性 · 函数原型允许在函数申明中指定参数类型 · 一些新的关键字,包括 const、volatile 与 signed 宽字符、宽字符串与字节多字符 · 对约定规则、声明和类型检查的许多小改动与澄清 4.C99 · 支持不定长的数组,即数组长度可以在运行时决定。 · 变量声明不必放在语句块的开头,for 语句提倡写成 for(int i=0;i<100;++i) 的形式,即i 只在 for 语句块内部有效。 · 初始化结构的时候允许对特定的元素赋值。 · 允许编译器化简非常数的表达式。 · 取消了函数返回类型默认为 int 的规定。 5.C11 最新标准
|
C语言 概述
最新推荐文章于 2022-08-02 17:59:57 发布