在C语言里,是会释放掉局部变量的值的,在子函数里定义的变量,都是存放在
栈中,子函数一退出,栈也就跟着被释放掉。
但有一种方法可以保存函数里局部变量的值,就是加个static前缀去定义。如下:
static int a;
在函数退出以后,a的值就会保存起来,但应该要把该值的地址传出去,好以后使用。
不过这种做法很少,一般没人这么使用了。
关于static的用法,加在变量定义前,和加在函数定义前,都有什么作用,最好去做个
理解,到你以后找工作面试时做C考试题目这个基本必考。
这个是仿真环境的问题,或者你的子函数变量和全局变量有重名的。
对于单片机来说,一定会释放掉的。
不清楚
童鞋,请你牢牢记住这一点,这是单片机,不是计算机。
单片机函数里的局部变量使用之后,只是把需要的结果COPY,用不着再使用程序将之清除,只要下次调用这个函数时有新的数据将其覆盖即可。何必要每次调用函数时去申请RAM,用过之后再清除再释放呢?单片机运行速度慢,51最快的也不过100MHz,对实时性的要求很高,何必要用多余的代码去干这些事?你的计算机CPU工作频率4GHz,没法比较啊。
另外,单片机平时运行时需要的RAM不过几十字节,遇到较大应用时也不过几十KB;而计算机动辄MB级别的RAM使用。
单片机每次调用函数时需要的RAM就是那固定地址的几个字节,而计算机可能是整个内存范围内的任意一个区间。就因为这一点,所以计算机才会做清除和释放的事情,而单片机不用。