1.33 C语言,静态变量的特点是什么呢,static int m=0和直接int m=0有什么区别

如果是静态全局变量呢

有区别,static int m=0:m的值不会变,而 int m=0的值会随着条件的变化而变化。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-17
静态变量的生存期为整个程序。非静态全局变量的作用域是整个源程序,
当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则只在定义该变量的一个源文件内有效.
第2个回答  推荐于2017-09-19
如果 static int m=0;
是某函数中的局部变量,那么这个变量只被初始化赋值为0一次,
当这个函数被多次调用时,除第一次被调用时 m 的内容被初始化为0外,
以后每次调用时,m 都会在上一次函数被调用时产生结果的基础上继续运行的。
例如 第一次调用 m被初始化为0, 函数运行结束时 m 的内容为 5,
第二次调用 m的内容就是5,并在次基础上继续运行程序。

如果m是在某函数内部定义的局部变量,则m只在该函数内部有效
m如果是全局变量,就会在定义语句之后的所有函数内有效。追问

我就是不知道static int m=0和int m=0有不同么
我觉得不都是一样在用么

追答

非静态的局部变量,在一个函数运行结束时,存储空间就被释放了,所以非静态的局部变量不可能保存变量在上一次函数被调用时产生的内容。
因此,对于静态局部变量:
第一次调用 m被初始化为0, 函数运行结束时 m 的内容为 5,
第二次调用 m的内容就是5,并在次基础上继续运行程序。
对于非静态局部变量:
第一次调用 m被初始化为0, 函数运行结束时 m 的内容为 5,
第二次调用 m的内容仍然被初始化为0,并运行函数,m的内容与前一次被调用的状态无关。

本回答被提问者和网友采纳
相似回答