static int a 和 int a是什么区别

如题所述

一、主体不同

1、static int a :变量a被定义为静态整型变量。

2、int a:定义为整型变量。

二、可变性不同

1、static int a :其值就会在编译时设定,并且无法在运行时改变。

2、int a:值在运行时设定,可以随时改变。


三、作用域不同

1、static int a :作用域只限于文件内。

2、int a:作用域在函数内,能够作为某特定种类的值中任何一个的保留器。


参考资料来源:百度百科-静态变量

参考资料来源:百度百科-变量

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-08-04
1、影响作用域
static int i; /* i只在本文件中可见,即你不能通过extern引用 */
int i; /* i可在别的文件中通过extern引用 */
2、影响存储的区域
static int i; /* 编译器在编译时,会将其存储在静态存储区 /
int i; /* 会存储在全局数据区 */

但是,二者在编译时,如果不明写初始化,编译器会自动把二者初始化为0,这点二者相同。本回答被网友采纳
第2个回答  推荐于2019-04-23
static int a;中的a是静态的整型变量.从定义开始到程序结束都存在.如果定义在函数里,则每次调用该函数时该变量都存在,并且它的值都保存下来.
例如:void add(){
static int a = 0;
printf("%d",a++);
}
void main(){
for(int i=0;i<10;i++)
add();
}
每次打印出来的都不一样,从0一直到9.
如果是类(c++)里面把static int a定义为成员变量,则该变量属于整个类,而不是某个该类的对象.也就是即使类没有定义对象,该变量都存在.本回答被网友采纳
第3个回答  2007-01-30
静态变量VS动态变量。
分配在不同类型的内存区域中。
静态变量直接占用EXE文件长度。
子程序中的静态变量当离开子程序时仍存在,因此当再次进入时可以直接使用原来的值(很有用的哦)。