c语言中,用static声明的局部变量有存在的意义吗

c语言中,用static声明的局部变量有存在的意义吗
它完全可以由全局变量代替嘛

如果没有同名的全局变量,当然可以写成全局变量。
如果已有同名的全局变量,你为了区分这个static局部变量,只好写在局部。

static声明了的局部,它的生命期与程序运行存在时间一样长。

全局变量实际上也是static,因为全局变量“默认”是static。

局部量声明为static的目的是保留它的值,当程序反复进入这个局部域(例如一个子程序),上次(调用子程序)的static量的结果,还保存在那里,而不像动态分配的量,退出局部域(退出子程序)它的量就消失。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-10-17
当然有意义了
全局变量是其他域也能访问
static 局部变量这种就不可以了
如果你说作用域无所谓,那你全部用全局变量好了,也没人拦你本回答被提问者采纳
第2个回答  2012-06-17
变量、生存期、存储位置和作用域(存储位置决定了生存期)以及程序设计思想中的封装保护
1)全局变量分配在静态区,具有静态生存期;
2) 局部变量分配在栈区,具有自动生存期;【 如果一个局部变量有static关键字,则其具有静态生存期,分配在静态区而不是栈区】
尽管static的局部变量和全局变量都分配在静态区,但是他们的作用域不同:
1)static的局部变量具有局部作用域,它不能在定义(声明)其函数之外的地方访问;因此static的局部变量能受到函数封装的保护。
2)全局变量具有全局作用域【如果一个全局变量有static关键字,则其作用域为文件作用域】,它可以在组成该程序的所有文件中访问【如果一个全局变量有static关键字,则其只能在定义(声明)其的文件中访问,而不能在程序的其他文件中访问】;
static的局部变量的另一个用处是:对其的初始化只在第一次调用定义(声明)其所在函数时进行,之后它就可以“记住”上一次调用其所在函数时计算出来的新值供下一次使用,而不是重新进行初始化。在这一点上,与全局变量有相同的效果。【但static的局部变量受到函数封装的保护,不能随意访问。】
第3个回答  2007-10-17
要理解这个问题,需要着眼于static的用法,不必抠static的局部变量的实际意义,它并不是为了专门声明局部变量而设计的,但在声明局部变量时总要有个合理的解释吧?
别太钻牛角了。
相似回答