C语言 概述

一:概述

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.汇编语言是低级语言,功能不够丰富,编写程序对程序员的要求也更高,因为,程序员必须能撑握CPUMCU的内存结构、总线结构、功能模块、堆栈系统、中断资源及机制等等

6.

C语言之父

C语言的诞生是现代程序语言革命的起点。今天,C语言依旧在系统编程、嵌入式编程等领域占据着统治地位。C语言就是丹尼斯·里奇开发的。因此,他被称为c语言之父、UNIX之父。

7.C语言的标准

 

K&R C(标准C),指的是ANSI CISO CC89C90

1.K&R C主要介绍了以下特色: 

· 结构(struct)类型

· 长整数(long int)类型

· 无符号整数(unsigned int)类型

· 把运算符=+=-改为+=-=。因为=+=-会使得编译器不知道使用者要处理i = -10还是i =- 10,使得处理上产生混淆。

2.ANSI C    ISO C

3.C89   C90

· 增加了真正的标准库  

· 新的预处理命令与特性  

· 函数原型允许在函数申明中指定参数类型  

· 一些新的关键字,包括 constvolatile signed  宽字符、宽字符串与字节多字符  

· 对约定规则、声明和类型检查的许多小改动与澄清

4.C99

· 支持不定长的数组,即数组长度可以在运行时决定。  

· 变量声明不必放在语句块的开头,for 语句提倡写成 for(int i=0;i<100;++i) 的形式,即i 只在 for 语句块内部有效。  

· 初始化结构的时候允许对特定的元素赋值。  

· 允许编译器化简非常数的表达式。

· 取消了函数返回类型默认为 int 的规定。

5.C11

最新标准

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值