嵌入式软件开发面试题整理
![star](https://csdnimg.cn/release/downloadcmsfe/public/img/star.98a08eaa.png)
"嵌入式软件开发面试题整理" 本资源摘要信息涵盖了嵌入式软件开发面试中常见的问题和知识点,包括关键字volatile、static、const的含义和作用,变量修饰符的区别,函数指针、ISR、中断服务子程序、union和struct的区别,以及引用和指针的区别等。 1. 关键字volatile的含义和作用: volatile关键字是防止变量被编译器优化的修饰符,被volatile修饰的变量,编译器不会去假设该变量的值,当优化器每次用到该变量的值时,都会去变量的原始地址去读取这个变量的值,而不是使用保存在寄存器中的备份值。volatile关键字的使用场景包括并行设备的硬件寄存器、非自动变量、中断服务子程序中的非自动变量和多线程应用中被几个线程任务共享的变量。 2. 关键字static的含义和作用: 在C语言中,static关键字可以修饰全局变量、局部变量和函数。static修饰的全局变量只能在本文件内使用,static修饰的局部变量生命周期延长到程序结束,static修饰的函数只能在本文件中使用。在C++中,static关键字可以修饰成员变量和成员函数,static修饰的成员变量在本质上是全局变量,static修饰的成员函数没有this指针。 3. 关键字const的含义和作用: const关键字是定义只读变量的修饰符,const关键字可以修饰变量、函数参数、函数返回值和函数定义体。被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。 4. 变量修饰符的区别: static全局变量与普通全局变量的区别:static修饰的全局变量只初始化一次,且不能在其他文件单元中被引用。static局部变量和普通局部变量的区别:static修饰的局部变量生命周期从程序开始到程序结束,且只被初始化一次。static函数与普通函数的区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝。 5. 函数指针和ISR: 函数指针是指向函数的指针,函数指针可以作为函数的参数,函数指针也可以作为函数的返回值。ISR(Interrupt Service Routine)不能有参数,ISR不能有返回值,ISR应该短且高效率,在ISR中做浮点运算不明智。 6. typedef和#define的区别: typedef是定义一个新的数据类型,typedef是在编译的时候进行的处理,并不是做简单的字符替换,而是同定义一个变量一样声明一个数据类型,然后用它去定义这种数据类型的变量。#define是在预编译的时候做简单的字符替换处理。 7. Union和struct的区别: Union和struct都是由多个不同的数据类型成员组成,但在任何同一时刻,Union只存放了一个被先选中的成员,而结构体的所有成员都存在。Union的不同成员赋值,将会对其他成员重写,原来成员的值就不存在了,而对于struct的不同成员赋值是互不影响的。 8. 引用和指针的区别: 引用和指针都是用于间接访问变量的方法,但它们有不同的特性。引用必须初始化,指针不必;引用处画化后不能改变,指针可以被改变;不存在指向空值的引用,但存在指向空值的指针。 9. const与#define相比的优点: const定义的是只读变量,#define为宏替换;const不改变变量的存储位置,#define定义的宏存储在代码段;const常量有数据类型,而宏常量没有数据类型;编译器可以对前者进行类型安全检查。
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/release/download_crawler_static/10030648/bg1.jpg)
![](https://csdnimg.cn/release/download_crawler_static/10030648/bg2.jpg)
剩余7页未读,继续阅读
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
- Enternal丶2021-04-12货不对板,别下。。坑
![avatar](https://profile-avatar.csdnimg.cn/7b8c72d5ff07472e82e615c7d5b689c2_m0_37752182.jpg!1)
- 粉丝: 24
- 资源: 8
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)