嵌入式c语言的基本数据类型。
char长度为1byte,即8位。
int长度为4byte,即32位。
unsigned int 简称unsigned
负数在计算机中存储时一般用补码表示。
#define uchar unsigned char
#define u8 unsigned char
#define uint unsigned int
#define u32 unsigned int
变量的种类。
局部变量:定义在函数内部的变量,作用范围仅限于定义它的这个函数内部。函数外部无法访问。
全局变量:定义在函数外部的变量,作用范围是整个程序。
静态变量:在定义的前面加上一个static,定义一次就不再消失,它会把上一次的值保存起来,下一次直接拿来就用。
动态局部变量:定义在函数内部的变量,通常定义的变量就是这种类型。
当局部变量与全局变量重名时,会优先访问自己的局部变量。
左位移运算符。
用来将1个数的各二进制全部左移,移位后,空白位补0,而溢出的位舍弃。
嵌入式c语言共有。
9条基本语句:顺序0个,选择2个,循环3个,转移4个。
32个关键字:
struct,enum,typedef,const,volatile,static,sizeof,extern,register,…)
extern存储种类说明,在其它程序模块中已说明的全局变量。
auto 存储种类说明,用于说明局部变量,默认值。
register 存储种类说明,使用cpu内部寄存的变量。
static 存储种类说明,静态变量。
typedef 数据类型说明,重新进行数据类型定义。
volatile 数据类型说明,该变量在程序执行中可被隐含地改变。
switch-case-break-default语句。
在case后的各常量表达式的值不能相同,否则会出现错误。
各case和default语句的先后顺序可以变动,而不会影响程序执行结果。
在case后,允许有多个语句,可以不用花括号括起来。do语句;
while(表达式);
首先执行一次循环体,再判别表达式的值,若为真则继续循环,否则终止循环。
转移语句(4个)
break;
只能用于switch-case-break和循环语句。
continue;
只能用在循环语句的循环体中。其语义是:结束本次循环,即不再执行循环体中continue语句之后的语句,转入下一次循环条件的判断与执行。
应注意的是,本语句只结束本层本次的循环,并不跳出循环。
goto;return;
本语句只用于被调用函数的返回。
函数声明。该函数返回值的数据类型函数名(数据类型形参,数据类型形参,…)
函数定义。该函数返回值的数据类型函数名(数据类型形参,数据类型形参,…)
函数体;嵌入式c语言将所有函数都认为是全局性的,而且是外部的,即可以被另一个文件中的任何一个函数调用。
每个函数都是独立的**块。
变量可以在各个层次的子程序中加以说明,它的作用域仅在这对大括号内。
有两种方法可以终止子函数运行并返回到调用它的函数中。
1)执行到函数的最后一条语句时返回。
2)执行到return语句时返回。
前者当子函数执行完后,仅返回给调用函数一个”0“。
预处理命令。
预处理就是指在进行编译的第一遍扫描之前所做的工作。
1)包含命令#include
使用尖括号表示在包含文件目录中去寻找,而不在源文件目录去寻找。
使用双引号则表示首先在当前的源文件目录中查找,若未找到,才到包含目录中去查找。
2)宏定义命令#define
无参宏定义。
带参宏定义。
宏定义只是简单的字符串代换,是在预处理时完成的,而typedef是在编译时处理的,它不是做简单的代换,而是对类型说明符重新命名。被命名的标识符具有类型定义说明的功能。
3)条件编译。
#ifdef 标识符如果标识符已被#define命令定义过*/
程序段1则对程序段1进行编译*/
#else程序段2否则,对程序段2进行编译*/
#endif
#ifndef 标识符。
程序段1#else
程序段2#endif
#if 常量表达式。
程序段1#else
程序段2#endif
类型定义符typedef
typedef int integer;
integer a,b;
相当于int a,b;
typedef char name[20]; 表示name是字符数组类型,数组长度为20*/
name a1,a2然后可用name说明变量*/
相当于char a1[20],a2[20];
typedef struct stu
char name[20];
int age;
char sex;
stu;stu body1,body2;
两个原则:程序一定是从程序存储器的0000h开始存放和执行。
org 0000h ljmp main
void main(void代表程序从0000h开始存放和执行。
语句;程序执行一定是个死循环。
主函数越短越好,主要用来初始化其它模块,以及调用其它模块。不要轻易调用某些库函数。中断函数禁止调用其它子函数。
常量一般全部大写。
全局变量一般第一个字母大写,局部变量全部小写。
结构体。将不同类型的数据组合成一个有机整体,以便于引用,这些组合在一个整体中的数据是相互联系的。
struct stu
int num;
char name[20]; 字符数组。
char sex字符变量。
int age;
float score;
char addr[20];
struct stu name1,name2;
#define stu struct stu
stuint num;
char name[20]; 字符数组。
char sex字符变量。
int age;
float score;
char addr[20];
stu name1,name2;
struct stu
int num;
char name[20]; 字符数组。
char sex字符变量。
int age;
float score;
char addr[20];
name1,name2;
结构变量名。成员名。
例如:或者嵌套的:
结构变量可以在定义时进行初始化赋值花括号括起来,逗号隔开来。
结构数组。struct stu
int name;
char name[20];
char sex;
float socre;
name[2]=
102,”zhang ling”,”f”,89.5}
指向结构变量的指针struct stu *pstupstu=&name1;
只有当某个变量被说明为这种类型的结构时,才对该变量分配存储空间。
指向结构数组的指针struct stu *psps=name;
struct为结构体类型,stu为结构体名,name[5]为结构体数组,name1为结构体变量,*p为结构体指针。
共用体。几个不同的变量共同占用一段内存的结构被称作共用体类型结构。
union data
int i;
char ch;
float f;
a,b,c;
可以引用哦,枚举类型。
enum weekday
sun,mon,tue,wed,thu,fri,sat
a,b,c;
weekday是枚举名,sun、mon等是枚举值,a、b、c是枚举变量。
在weekday中,sun值为0,mon值为1,…,sat值为6
但是注意,a=sum对,a=0错。
枚举元素不是字符常量,也不是字符串常量,使用时不要加单引号,双引号。
函数指针。函数指针是指指向函数的指针。
/声明一个函数,函数名代表函数的地址。
void fun(char,int);
/定义一个函数指针,形参为一个char类型,一个int类型,返回类型为void
void (*pf)(char,int);
pf=fun;
函数指针类型。
/声明一个函数指针类型。
typedef void (*fun)(char,int);
在函数指针声明前面加上一个typedef就可以了。
该定义表示fun是一个类型,而且是一种函数指针类型,该函数指针类型表示这样一类指针。
函数类型。/声明一个函数。
void fun(char,int);
/该声明定义了一个函数类型。
typedef void fun(char,int);
类型定义符typedef
typedef int integer;
integer a,b;
相当于int a,b;
typedef char name[20]; 表示name是字符数组类型,数组长度为20*/
name a1,a2然后可用name说明变量*/
相当于char a1[20],a2[20];
typedef struct stu
char name[20];
int age;
char sex;
stu;stu body1,body2;
c语言的关键字。
数据类型关键字。
unsigned和signed
void控制语句关键字。
存储类型关键字。
autoregister
static
如果它用于函数内部的局部变量声明时,作用是改变局部变量的存储类型,从自动变量变为静态变量,也就是说这个局部变量不再存储于堆栈或寄存器中,而是在编译的时候由编译器分配一个静态的地址空间,但是这个变量的作用域不受影响,依然仅局限在声明它的函数的内部才可以访问。需要说明的是,一旦函数内部的局部变量被声明为static,这个函数就有可能变得不可重入。
如果static关键字被用于函数的定义时,这个函数就只能在定义该函数的c文件中引用,该c文件外的**将无法调用这个函数。
嵌入式C 高级编程
嵌入式c 面向对象高级编程 笔试试卷。请将填空题的答案填入 中。一 选择题。1.下列关于类和对象的叙述中,错误的是 2分 a.一个类只能有一个对象 b.对象是类的具体实例 c.类是对某一类对象的抽象 d.类和对象的关系是一种数据类型与变量的关系 2.当将一个类a或函数f 说明为另一个类b的友元后,类...
嵌入式C语言高级编程试卷B
上嵌 嵌入式c高级编程 笔试。一 选择题 每题1分,共20道 语言程序编译时,程序中的注释部分 a 参加编译,并会出现在目标程序中。b 参加编译,但不会出现在目标程序中。c 不参加编译,但会出现在目标程序中。d 不参加编译,也不会出现在目标程序中。2.语句 int k 0586 将 a 说明k 为初...
嵌入式系统C语言
嵌入式系统的c语言。译自 c for embedded systems 讲稿。刘永重译。一 c语言基础。1 什么是c?c 程序语言最初是由dennis ritchie在1971年为unix系统开发并实现的。c的一个最大优点是与任何特定的硬件或系统无关。这使得一个用户写的程序不作任何修改就能运行在几乎...