#01【面试问题整理】嵌入式软件工程师

前言


        本系列文章预计应该也许可能大概会持续更新一段时间。笔者将整理网络上各个面试题目,在此系列中。如有错误可以私信、评论指正,多多包涵~谢谢~

        本期参考文章如下:

        【八股文】嵌入式软件工程师-2025校招必备-详细整理_嵌入式软件开发八股-CSDN博客

1、 volatile 关键字

        volatile关键字主要是为了防止编译器对变量进行优化,在某些特殊情况告知编译器存取某个变量的时候不在寄存器中存取,而是直接从内存存取。

int a = 1, b, c; 
b = a;   
c = a;    

        在上述代码中,第一行执行了变量的初始化。

        第二行,b = a,编译器先将变量a的内存地址(&a)里的值存入 CPU,再从 CPU 读取值存入变量b的内存地址中。

        第三行,c = a,由于此时 CPU 中已经有变量a的值,所以直接从 CPU 中读取值存入c的内存地址中。

        当代码执行在第二行和第三行之间的时候,如果发送了中断,在中断处理函数中改变了a的值,那么此时变量a的内存地址中的值会改变,但是 CPU 的值不会,此时变量c的值是a的旧值。

volatile int a = 1, b, c; 
b = a;   
c = a;    

        在上述代码中,使用了 volatile 关键字。第一行与上面一致。

        第二行,也一样。在第三行,此时 volatile 会让编译器不管咋样,都要从内存中存取,所以此时还是会访问a的内存地址,而不是 CPU 。那这样结果就和变量b的值一样了。

哪些情况下使用volatile?

        (1)并行设备的硬件寄存器。存储器映射的硬件寄存器通常加volatile,因为寄存器随时可以被外设硬件修改。当声明指向设备寄存器的指针时一定要用volatile,它会告诉编译器不要对存储在这个地址的数据进行假设。

        (2) 一个中断服务程序中修改的供其他程序检测的变量。volatile提醒编译器,它后面所定义的变量随时都有可能改变。因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。

        (3)多线程应用中被几个任务共享的变量。

2、 static 关键字

        static是被声明为静态类型的变量,存储在静态区(全局区)中,其生命周期为整个程序。

        static可以修饰变量和函数。

        如果是静态局部变量,其作用域为一对{  }内。

        如果是静态全局变量,其作用域为当前文件。 

相关推荐

  1. #01面试问题整理嵌入软件工程师

    2024-05-13 16:42:10       43 阅读
  2. #08面试问题整理嵌入软件工程师

    2024-05-13 16:42:10       27 阅读
  3. #07面试问题整理嵌入软件工程师

    2024-05-13 16:42:10       29 阅读
  4. 嵌入面试笔试问题整理 (持续更新)

    2024-05-13 16:42:10       23 阅读
  5. 嵌入硬件工程师嵌入软件工程师

    2024-05-13 16:42:10       63 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-13 16:42:10       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-13 16:42:10       100 阅读
  3. 在Django里面运行非项目文件

    2024-05-13 16:42:10       82 阅读
  4. Python语言-面向对象

    2024-05-13 16:42:10       91 阅读

热门阅读

  1. 动态sql

    动态sql

    2024-05-13 16:42:10      35 阅读
  2. 2024高频前端面试题合集(三)

    2024-05-13 16:42:10       25 阅读
  3. 速盾:cdn转发循环攻击

    2024-05-13 16:42:10       28 阅读
  4. Python numpy 学习笔记

    2024-05-13 16:42:10       29 阅读
  5. 随笔3:Stay Hungry. Stay Foolish新解

    2024-05-13 16:42:10       30 阅读