预备知识
计算机组成和⼯作原理
计算机组成
计算机(Computer)
- 能进⾏计算和逻辑判断的设备
- 在⼀组指令(instructions)ž程序(programs)的控制下处理数据硬件(Hardware)组成计算机的各种物理部件键盘、⿏标、显⽰器、内存、硬盘、光驱等等软件(Software)计算机中运⾏的程序和数据
硬件(Hardware)
-
组成计算机的各种物理部件
-
键盘、⿏标、显⽰器、内存、硬盘、光驱等等
硬件 = 电⼦设备 + 单⽚机编程(单⽚机,微控制器) + 集成电路(原理图PCB设计) + 嵌⼊式系统
软件(Software)
-
计算机中运⾏的程序和数据
软件 = 系统软件(linux系统) + 应⽤软件 + 编程语⾔(C/C++) + 算法和数据结构
计算机六大部件
-
中央处理器(CPU)
-
内存(Memory)
-
输⼊设备(Input Devices)
-
输出设备(Output Devices)、
-
外存储器(External Storage)
-
⽹络(Network)
计算机的工作原理
- 存储程序
- 程序控制
计算机语言
- 机器语言:二进制0和1构成
- 汇编语言:充当翻译
- 高级语言:C/C++,Java,Python,PHP,C#
C语言的简史与特点
嵌入式开发就是针对Linux系统的开发,而Linux系统是使用C语言开发的,所有我们从事嵌入式开发要使用C语言。
C语言的起源
-
其前⾝是B语⾔;
-
B语⾔是美国⻉尔实验室的 Ken Thompson于1969年开发出来的,并且⽤B语⾔编写了初版的UNIX系统
-
1972年美国⻉尔实验室的Dennis 出版Ritchie在B语⾔基础上开发的C语⾔.C语⾔提供了丰富的数据类型和标识符,使得程序的编写变得⾮常⾼效和⽅便。
-
1973年初,C语⾔的主体完成。汤普森和⾥奇迫不及待地开始⽤它完全重写了UNIX。
C语言的标准
为了C语言健康发展下去,很多有识之士及美国国家标准协会(ANSI)于1982年成立了一个委员会以确定C语言的标准。
-
1989 ANSI 发布了第⼀个完整的C语⾔标准,即C89。不过⼈们习惯性的称为 “ANSI C”
-
1990年ISO(国际标准化组织⼀字不改的采纳了 C89,官⽅给出的名称为 ISO C90) 。
-
1999年,C语⾔标准经过了⼀次修正和完善后,ISO发布了新版的C语⾔标准,简称” C99”。
-
2018年6⽉份发布的 “C18”GNU C 标准 (标准C的扩展) ,进⼀步增强了语⾔的稳定性和功能性。
-
在2011年12⽉8⽇,ISO⼜正式发布了新的标准,称为ISO/IEC9899:2011,简称为“C11”。
-
“C23”是最新的标准,预计将进⼀步扩展C语⾔的功能和性能。
-
应⽤于Linux 系统,当然Linux也⽀持标准C,因为标准C是跨平台的。
C语言的特点
-
C语⾔是⼀种强⼤⽽灵活的语⾔,可以⽤来编写任意复杂的程序。
-
C语⾔简洁、紧凑,使⽤⽅便。
-
C语⾔是可移植的。
-
C语⾔很适合结构化程序设计,因⽽要求⽤⼾以功能模块的⽅式来思考问题。
-
C语⾔可直接控制硬件 (位运算符,地址 )
-
⽣成⽬标代码质量⾼,程序执⾏效率⾼,运⾏速度快。
C语言的应用非常广,也非常多,在此仅列出其中的一些应用:
C语言可以用来开发许多系统软件。如UNIX,LINUX等操作系统。
在软件需要对硬件进行操作的场合,用C语言明显优于其它高级语言。例如,各种硬件设备的驱动程序(象显卡驱动程序、打印机驱动程序等)一般都是用C语言编写的。
在图形、图像及动画处理方面,C语言具有绝对优势,特别是游戏软件的开发主要就是使用C语言。
随着计算机网络飞速发展,特别是Internet的出现,计算机通信就显得尤其重要,而通信程序的编制首选就是C
语言。 C语言适用于多种操作系统,象WINDOWS、UNIX、LINUX等绝大多数操作系统都支持C语言,其它高级语言未必能得到支持,所以在某个特定操作系统下运行的软件用C语言编制是最佳选择。
Java,C++,C# 都是在C语言基础上开发出来的。
C语言程序的开发过程
开发的三个步骤
- 编辑:程序员向.C⽂件写⼊程序
- 编译:将源⽂件(.c)编译成可执⾏程序(⼆进制)
- 运行:运⾏可执⾏程序
C语言程序的编译过程
编译过程分为4个步骤:
- 预处理
- 编译
- 汇编
- 连接
C语⾔程序的基本结构
⼀个简单的C语⾔程序
/*************************************************************************
> File Name: demo01.c
> Author: 萨斯给
> Description: C语言的基本结构
> Created Time: 2024年11月25日 星期一 10时53分15秒
************************************************************************/
//引入系统库(系统的标准输入输出库,如:scanf(),printf())
#include <stdio.h>
//入口函数:每一个.c文件有=又且仅有入口函数
//c语言中入口函数的返回值和参数列表比较灵活,唯一的要求:函数名必须是main
int main(int argc,char *argv[])
{
//向控制台输出hello 世界!
printf("hello 世界!\n");//执行代码执行结束,使用“;”表示结束“\n”是换行符,用于换行
return 0;
}
运行结果
程序结构分析
-
注释部分
-
以增加程序的可读性。
-
不被执⾏。
-
-
预处理命令
-
程序中包含某⼀⽂件内容。
-
“stdio.h”为标准的输⼊输出函数头⽂件名。
-
-
主函数
-
C程序由函数组成。
-
⼀个C程序有且仅有⼀个主函数(main函数)。
-
-
函数⾸部(函数头)/ 函数说明
- 说明函数类型、函数名和函数参数。
-
函数体
- 包括变量说明和语句执⾏部分。
-
函数调⽤语句
-
格式输出函数printf()。
-
输出“hello 世界!”。
-
C语⾔编码规范要求
C语言在编码的时候,需要遵循如下规范:
-
常⽤缩进书写格式(⼀般缩进2或4个字符)
-
有⾜够的注释(添加必要的注释,使代码更好理解)
-
有合适的空⾏(⼀般预处理命令和函数、全局变量和函数、函数和函数之间要有空⾏,使代码结构更清晰)
-
{}对⻬(C和C++中 { 和 } 都需要独占⼀⾏)
-
函数体内采⽤分层缩进和模块化的书写⽅式
-
不把多条语句写在程序的同⼀⾏上
-
命名:变量或函数命名要尽可能包含更多含义,但不能太⻓,可采⽤ _ 和缩写来命名。
C语⾔程序的设计特点
C语言程序在设计的时候,需要注意如下细节规范:
-
⼀个C程序由⼀个或多个函数组成,但有且仅有⼀个主函数 (main函数);main函数是程序执⾏的⼊⼝,可置于程序的任何位置。
-
程序中可以有预处理命令(如:include 命令)。预处理命令通常放在 程序的最前⾯。
-
每个语句以分号结尾;预处理命令、函数头和花括号“}”之后不能 加分号。
-
函数体由⼀对花括号“{ }”括起来。
-
括在/…/内的⽂本为注释。
-
⼀⾏可以写⼏个语句,⼀个语句也可以写在多⾏上。
-
程序区分⼤⼩写字⺟。⼀般变量、语句等⽤⼩写字⺟书写;符号常量、 宏名等⽤⼤写字⺟书写。
-
标识符和保留字(关键字)之间须加空格以⽰分隔。
C语言中的注释
在C语言中,注释一般分为两类,单行注释和多行注释
注释的作用:给代码添加解释说明性文字,提升代码的可读性,注释本身不会被执行。同时也可以使用注释屏蔽掉代码。
单行注释
说明:单行注释使用双斜杠//
表示。我们一般用于常量、变量等的定义。
语法:
// 单行注释
示例:
//预处理指令,引入的标准输入输出库
#include <stdio.h>
int main()
{
//打印信息到控制台
printf("hello world!]n");
}
多行注释
说明:多行注释使用斜杠星号/*...*/
表示。他可以占用多行代码,但不能嵌套。我们一般用于函授,文件头说明
语法:
/*
要注释
的代码
*/
示例:
//预处理指令,引入的标准输入输出库
#include <stdio.h>
/*
主函数
*/
int main()
{
//打印信息到控制台
printf("hello world!]n");
}
注意:有多行注释衍生出一直更为细致的注释,我们称之为文档注释
示例:
//预处理指令,引入的标准输入输出库
#include <stdio.h>
/**
* 主函数
* @author 作者
* @parm 参数
* @return 返回值
* ...
*/
int main()
{
//打印信息到控制台
printf("hello world!]n");
}