嵌入式学习笔记 -- 基础与硬件(3)

三.嵌入式常用的C语言语法概要

1.为什么选择C语言?

嵌入式学习笔记 -- 基础与硬件(3)_第1张图片

 

2.数据类型

嵌入式学习笔记 -- 基础与硬件(3)_第2张图片

 

3.寄存器类型(register)变量

使用关键字“register”声明变量后,被声明的变量采用寄存 器存放,从而提高存取效率。不过由于寄存器数量有限,不 能定义任意多个寄存器变量。

 

4.程序流程控制 -- 顺序结构,选择结构,分支结构

1. 顺序结构就是从前 向后依次执行语句,从整体上看,所有 程序的基本结构都 是顺序结构,中间 的某个过程可以是 选择结构或循环结 构

2.在C语言中主要有 if 和 switch 两种选择结构

3.C语言中的循环结构常用for循环,while循环与do...while循环

 

5.函数

所谓函数把经常使用的语句群定义成函数,供其他程序调用,函 数的编写与使用要遵循软件工程的基本规范。


使用函数要注意

 函数定义时要同时声明其类型;

 调用函数前要先声明该函数;

 传给函数的参数值,其类型要与函数原定义一致;

 函数的返回值:return表达式;

 接收函数返回值的变量,其类型也要与函数类型一致。

 函数传参有传值与传址之分。
 

 

6.数据存储方式

数组:数组是由基本类型数据按照一定的规则组成的。也可以通过malloc,calloc函数,进行内存空间的动态分配,从而实现数 组的动态化,以满足实际需求。

指针:指针是一个用来指示一个内存地址的C语 言的变量。注意:任何类型的指针都可以直接赋值给void *类型,无需进行强制类型转换。

枚举:枚举是列出某些有穷序 列集的所有成员,作为 一种特定类型对象。

结构体:结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。

共用体:几种不同的变量共同占用一段内存的结构,被称作“共用体”类型结构。

空类型:空类型字节长度为0, 一是明确地表示一个函数不返回任何值;二是产生一个同一类型指针, 然后可根据需要动态地 分配给其内存。

 

7.编译预处理 -- typedef


  C语言中可以用typedef定义新的类型名,代替已有的类型名.

 用法说明:

(1)用typedef可以定义各种类型名,但不能用来定义变量。

(2)用typedef只是对已经存在的类型增加一个类型别名,而没有创造新 的类型。

(3)typedef与#define有相似之处,但事实上它们二者不同,#define是在预编译时处理,它只能做简单的字符串替代,而typedef是在编译时处理。

(4)当不同源文件中用到各种类型数据(尤其是像数组、指针、结构体 、共用体等较复杂数据类型)时,常用typedef定义一些数据类型,并把它们单独存放在一个文件中,然后在需要用到它们时,用#include命令把该文件包含进来。

(5)使用typedef有利于程序的通用与移植。

 

8.编译预处理 -- 宏定义

宏定义指的是,在编译时在所有引用宏的地方,都将自动被替换成宏所代 表的表达式。表达式可以是数字、字符,也可以是若干条语句。
 

#define 宏名 表达式


撤销宏定义:#undef 宏名
 

9.编译预处理 -- 条件编译

条件编译:

#if  表达式      //如果表达式成立,则编译

#if下的程序 #else 表达式     //否则编译#else下的程序

#endif          //#endif为条件编译的结束标志。

 

10.编译预处理 -- 文件包含

所谓“文件包含”是指一个源文件将另一个源文件的全部内容包含进来(实际处理时,就是把文本直接复制粘贴过来) ,其一般形式为:

#include  “文件名”
 

 

你可能感兴趣的:(嵌入式学习笔记 -- 基础与硬件(3))