问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

stm32静态局部变量存储在什么区别

发布网友 发布时间:2022-04-23 16:18

我来回答

2个回答

热心网友 时间:2023-10-09 06:34

静态局部变量属于静态存储方式,它具有以下特点:
(1)静态局部变量在函数内定义,但不象自动变量那样,当调用时就存在,退出函数时就消失。静态局部变量始终存在着,也就是说它的生存期为整个源程序。静态局部变量有全局变量的优点,也有局部变量的优势。
(2)静态局部变量的生存期虽然为整个源程序,但是其作用域仍与自动变量相同,即只能在定义该变量的函数内使用该变量。退出该函数后, 尽管该变量还继续存在,但不能使用它。
(3)允许对构造类静态局部量赋初值。若未赋以初值,则由系统自动赋以0值。 

从作用域看: 

全局变量具有全局作用域。全局变量只需在一个源文件中定义,就可以作用于所有的源文件。当然,其他不包括全局变量定义的源文件需要用extern关键字再次声明这个全局变量。 

静态局部变量具有局部作用域。它只被初始化一次,自从第一次初始化直到程序与你新内阁结束都一直存在,他和全局变量的区别在于全局变量对所有的函数都是可见的,而静态局部变量只对定义自己的函数体始终可见。 

局部变量也只有局部作用域,他是自动对象,他在程序运行期间不是一直存在,而是只在函数执行期间存在,函数的一次调用结束后,变量就被撤销,其所占用的内存也被收回。 


静态全局变量也具有全局作用域,他与全局变量的区别在于如果程序包含多个文件的话,他作用于定义它的文件里,不能作用到其他文件里,即被static关键字修饰过的变量具有文件作用域。这样即使两个不同的源文件都定义了相同的静态全局变量,他们也是不同的变量。 

从分配内存空间看: 

全局变量、静态局部变量、静态全局变量都在静态存储区分配空间,而局部变量在栈分配空间。 


全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上没有什么不同。区别在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。而静态全局变量则*了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其他源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其他源文件中引起错误。 

注意: 

1、若全局变量仅在单个文件中访问,则可以讲这个变量修改为静态全局变量。 

2、若全局变量仅在单个函数中使用,则可以将这个变量修改为该函数的静态局部变量。 

3、全局变量、静态局部变量、静态全局变量都存放在静态数据存储区。 

4、函数中必须要使用static变量的情况:当某函数的返回值为指针类型时,则必须是static的局部变量的地址作为返回值,若为auto类型,则返回为错指针。

热心网友 时间:2023-10-09 06:34

RAM分为堆和栈 堆一般存放全局变量,从RAM的低地址,向上生长 栈一般存放局部变量,从RAM的高地址,向下生长 全局变量会占用RAM空间
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
桥本氏甲亢化验单说明什么 桥本氏甲亢??检验报告严重么 华为Y325-T00手机不小心设置英文版怎么办? 腾讯手游助手怎么双开 腾讯手游助手能双开吗 腾讯手游助手怎么双开-腾讯手游助手双开教程 审计定义的理解是什么 全国各地还有谁叫刘超啊 ? 滑冰滑冰场 彭水火车站到重庆北火车站有的少公里一 彭水到重庆坐火车要几个小时 分手后总是梦见前任 而且还是那种甜甜的梦 梦里对我特别好 是为什么? stm32f1怎么把参数存放到独立的固定地址 梦见前男友对我特别好是为什么? stm32程序定义的各种参数都存在哪,比如我定义一个存放1000个数的数组,这些数都存在哪啊 51单片机、stm32中sfr和define的定义问题求解!!! stm32怎么通过内存存储大量的数据库 stm32 中读取一个16位寄存器的值,存放在一个char类型的数组中,可以吗?八位和十六位不冲突吗? 刚开始接触STM32,我想问一下如果我想设置标志位怎么设置。我知道在单片机里面是 bit f;就可以了。 stm32主存储区是用来存程序和静态数据的 stm32flash写数据怎么存储的 STM32一个地址能存储多少位 stm32中GPIOx_BSRR和 GPIO_xBRR寄存允许对任何GPIOx进行读\更改的独立访问; 如何清除STM32 定时器TIM1的状态寄存 (能解按要求决问题有赏) 对于stm32,初学者用库函数好还是直接对寄存 stm32如何保存6000个数据 下五子棋真能达到无人能敌的水平,下五子棋有哪些套路? 五子棋如何下 下五子棋有什么诀窍? 如何下好五子棋? 下五子棋的诀窍是什么? stm32开发板上既有eeprom又有flash,他们里面应该分别存储哪些信息 做梦梦见前男友对自己特好,自己特幸福为什么 stm32 hal库如何更改代码存放的地址空间,在做一个IAP 需要修改app的存放地址 我梦见前男友了, 他比以前还要好,对我也特别好,还要给我过生日,这个梦预示着什么?_? 如何将ADC采样数据存放到STM32的flash中 昨晚做梦梦到前男友了,梦里对我很好,但是我已经好久没想他了!为什么? stm32程序里定义的数组是存到Flash里还是SRAM 梦见过去的男朋友对我很热情最后他走他的我走我的? 经常梦见前男友突然对我很好,又突然不理我感受,离我而去,是心里有阴影了吗? 总是梦见前男友还对我以往的好,昨天晚上我做梦又梦见我前男友了,我跟他分手三个多月了,我一直没忘记他 为什么连着三天梦见前男友,梦见他对我时好时坏,还说爱我。醒来之后满是失落。 昨晚梦到了前男友,他对我说我们结婚吧,我早就忘了他,突然梦见他了,这是怎么回事 绑定了淘宝的银行卡无论做什么都有记录?就是在哪里取钱都会有记录吗 梦见前男友突然对我很苛刻 淘宝购物后自动记了银行卡号(信用卡),感觉很不安全,怎么删除这个卡号记录呢? 梦见前男友回来了,结果他真突然给我发消息? 请问下淘宝上买东西 用信用卡支付,能否从银行账单查到买了什么东西的记录? 跟男朋友分手后第一次梦见他,他对我说,他好想我,是怎么回事? 淘宝用银行卡银行会有支付记录吗 为什什么淘宝上了东西以后支付宝和银行卡上面没有记录?