这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 请问main函数内定义的变量是在栈上吗?

共4条 1/1 1 跳转至

请问main函数内定义的变量是在栈上吗?

工程师
2023-08-22 14:24:25     打赏

有个程序调试很久一直数据异常,后来无意发现main函数内定义的变量定义在main以外后程序功能正常了。
我分析原因可能是:main函数内定义的变量属于函数局部变量,局部变量保存在栈中,main中有后续程序意外改变了栈里的值,导致这个定义在main内的变量值发生了意外改变




关键词: 函数         

助工
2023-08-22 14:24:52     打赏
2楼

重复定义或者重复使用了一个变量,最好不要用单独的一个字母做变量


专家
2023-08-24 13:39:57     打赏
3楼

个人印象里,在汇编语言中,只有发生了程序调用或者中断这样的处理时,才会用到“栈”。平时的数据处理,需要暂存的时候,一般都是用内部的数据存储区。在C的函数中声明的变量,属于局部变量,如果没有特殊关键字,在这个子程序外是不会保存下来的。解决办法:一个是你是用全局变量;另一个是加入关键字;


专家
2023-08-24 13:44:21     打赏
4楼

栈是用来临时保存数据的地方。是为了保护现场和恢复现场用的。


共4条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]