局部变量和static局部变量的区别

我在单片机程序里写了个C子函数,里面要调用全局变量,耗用单片机的内存,现在我将这个全局变量更改成子函数内的static变量,但是一样耗用单片机内存,这个static变量和全局变量是一样的吗?
就是说,我声明1字节的全局变量时系统内存的消耗是12byte(假设),当我把这个全局变量改成局部变量的时候,系统内存的消耗还是12byte?

局部变量:每次进入进入子函数中重新赋值
static:静态变量,开始定义时赋值,以后进入子函数时之前在此函数中计算的值重新赋值该变量 ,static变量和全局变量是不一样,static变量只能在你定义那个子函数中有效。追问

你好,其实是这样的,我在给51单片机编程,用的是keilC51软件,不清楚的是,在系统main()函数释放子函数的时候,子函数中的的局部变量会消失吗?为什么在编程的过程中,声明局部变量和声明全局变量一样,都消耗系统总内存啊?
就是说,我声明1字节的全局变量时系统内存的消耗是12byte(假设),当我把这个全局变量改成局部变量的时候,系统内存的消耗还是12byte?

追答

系统main()函数释放子函数的时候,子函数中的的局部变量会消失(静态变量除外),在编程的过程中,声明局部变量和声明全局变量消耗系统总内存要视具体而定,可能相同,可能不同;

追问

你说“声明局部变量和声明全局变量消耗系统总内存要视具体而定,可能相同,可能不同”,能不能给我举个“不同”的例子啊,我现在看到的全部都是“相同”的,所以我奇怪啊,声明局部变量也没办法减少内存的占用,有没有什么办法降低内存占用?先谢谢了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-08-24
访问权限的区别
局部变量就相当于C语言的全局变量,在整个类中可以随意访问的变量
static 局部变量不仅在整个类中可以随意访问,在整个包中也可以随意访问