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

三、前入睡常用的C语言语法概要

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

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 “文件名”