#嵌入式笔面经分享# 海康公司嵌入式硬件面经(第x面) 时间:6月30日-6月30日 时长:40分钟 面试内容: 【问】介绍一下static关键字的作用 【答】static可以修饰全局变量、局部变量和函数。分别有以下作用: 全局变量:使全局变量对外部文件不可见。(隐藏) 局部变量:使局部变量存储在全局静态区,只初始化一次,函数结束后可一直存在,可在函数内修改。(更改存储区域&延长生命周期) 修饰函数,表明函数的作用范围,仅当前.c文件内可被调用,对外不可见。(隐藏) 【解析】 全局变量 全局变量本身就存在于全局静态区,static关键字的作用是隐藏,更改全局变量的作用域。 为什么要隐藏呢? 有的是考虑到重名的因素,但我个人认为还有一点是比较重要的,那就是处于安全的考虑。 比如有一个c文件名为Trusty.c,里面定义了各种对于用户密码的操作,由一个名为安全小组的团队维护。 那么我们知道,用户密码肯定是存放在一个全局变量PassWord中,方便各个函数调用操作。 PassWord在这个Trusty.c可以随意被调用,因为是由安全小组内部维护的,可以保证安全性。 但是,如果另外模块得知了PassWord这个变量名,就可以随意调用。 那么缺乏保护措施的另一个模块,很容易泄漏PassWord的内容,导致最重要的密码被窃取!这是绝对绝对不可以的! 此时就可以在Trusty.c中定义一个静态全局变量来对外部隐藏PassWord变量啦。 static char PassWord[10] = "XiaoYu666"; 局部变量 static修改局部变量主要是延长生命周期。 我们都知道,局部变量原本就有隐藏作用,仅对当前函数可见。 同时局部变量原本是存放在内存中的栈区,每次进入函数时创建,退出函数时销毁。 使用static修改局部变量后,将局部变量从栈区移至全局静态区,其生命周期为一直存在。 所以是更改存储区域导致的生命周期延长。 面试总结:重视面试八股文
点赞

相关推荐

牛客网
牛客企业服务