一、嵌入式与单片机的区别数组
从软件上,行业里常常把芯片中不带MMU(Memory Management Unit内存管理单元)从而不支持虚拟地址,只能裸奔或运行RTOS(实时操做系统,例如ucos、华为LiteOS、RT-Thread、FreeRTOS)的system,叫作单片机(例如STM3二、NXP)函数
而把芯片自带MMU能够支持虚拟地址,可以跑Linux、Vxworks、WinCE、Android这样的“高级”的system,叫作嵌入式spa
二、Heap(堆)和Stack(栈)的区别操作系统
Heap(堆)上的空间是手动分配和释放的,Stack(栈)上的空间是自动分配和释放的指针
三、全局变量和局部变量的区别code
一、做用域不一样:全局变量做用域为整个程序,局部变量的做用域为当前语句块;对象
二、内存存储方式:全局变量在全局数据区(静态数据区),局部变量存储在栈上;blog
三、生命周期不一样:全局变量的生命周期和程序周期同样,局部变量随着语句块的结束而结束;生命周期
四、当局部变量和全局变量同名时,优先使用局部变量,使用全局变量是要用域成员运算符;内存
四、结构体和联合体的区别
一、结构体和联合体都是由不一样的数据类型组成,但在任什么时候候,联合体只存在一个被选中的成员,结构体的全部成员都存在;
二、在结构体中,各成员占有本身的存储空间,总大小等于各成员的大小之和;
三、在联合体中,全部成员共用一块存储空间,其大小等于联合体中最大成员的大小;
五、数组和指针的区别
一、指针要么在静态存储区,要么在栈上被建立。数组名对应着一块内存,其容量与地址在生命周期内保持不变;
二、指针能够随时指向任意类型的内存块,它的特征是可变,比数组灵活,但也危险;
六、指针函数和函数指针的区别
一、指针函数是一个函数,它返回值是一个指针;
二、函数指针是一个指针,这个指针所指的对象是一个函数;
七、常量与变量的区别
一、常量是只读不可写,变量可读可写;
二、常量必须初始化,变量能够不初始化;
三、常量不能够寻址,它的地址不可赋给很是量指针,变量能够寻址;
八、指针自增自减与变量自增自减有什么区别
指针自增自减是改变指针所指的对象;变量自增自减是改变变量的值。
九、#error的做用是什么
编译程序时,只要遇到#error就会跳出一个编译错误
十、#include 与#include “file.h”有什么区别
#include 表示该文件存在编译器指定的标准头文件存放处;#include “file.h”表示该文件在用户当前的工做目录下
头文件中的 ifdef /define endif的做用:防止头文件被重复引用。
十、常见的条件语句比较写法
一、bool类型 if(flag)建议使用
二、int类型 if(value != 0)建议使用
三、float if( x > -EPSION && x < EPSION )建议使用
四、指针 if(p == NULL)建议使用,强调p为指针;不建议if(p == 0)会让人误解为int类型
十一、用#define实现宏并求最大值最小值
#define MAX(x,y) ((x)>(y))?(x):(y)
#define MIN(x,y) ((x)
十二、break语句与continue语句有什么区别
continue语句只能出如今循环语句中,表示结束本次循环;break语句还能够出如今switch语句中,表示结束switch语句。在循环语句内表示结束整个循环。
1三、static关键字的做用
一、用于全局变量:表示该变量是静态全局变量。做用域为当前文件;
二、用于函数:该函数为静态函数,只能在本文件中调用。静态函数在内存中只有一份,普通函数在内存中维持一份拷贝;
三、用做局部变量:为静态局部变量,只初始化一次。以后调用函数都是上次函数退出时的值。即改变变量的生存周期为整个程序运行的时间段内;
四、static成员函数:表示这个函数属于此类而不属于此类的任何对象,不能访问非静态变量和函数,该函数在该类中是惟一的。
1四、const关键字的做用
一、修饰通常变量和数组:修饰符可在类型说明符前,也可在类型说明符后;
二、修饰常指针: