看看我的理解对不对
1.全局变量 静态局部变量 栈 堆 全都会放在RAM中
2.函数
uint32_t fun(uint32_t arg){
static uint32_t i;
uint32_t j;
...
return j;
}
其中 参数arg 变量j 都是会放在栈中 i放在静态局部变量区
如果 函数fun是放在while(1)中频繁运行 根据问题1. 那么是不是最好把arg j改成静态局部变量或者全局变量
从好的编程习惯来说,尽量减少全局变量的使用
此外无论那种变量,其实都在RAM中,只是在RAM中的不同位置而已。
只要是在RAM,频繁读写都没有问题,都不会时选择变量类型(全局、静态、局部)之类需要考虑的因素。
全局变量用来在不同函数之类非传参传递信息
静态局部变量时在同函数中保持执行过程状态(保持上次本函数执行状态,或者称为延续上次本函数执行状态)
对于单片机来说全局变量和局部静态变量耗的资源是一样的,只是编程上尽量少用全局变量,只有多个函数需要调用才会用全局变量,因为全局变量如果使用太多的话程序看上去会比较乱,
他们存放的位置都在栈中
1、正确,RAM会分成不同段,不同的变量保存在不同的段里面
2、性能上面其实是一样的,放不同的地方只是方便开发者而已