static int x=0;和static int x;x=0;为什么不一样呢?

intx=0和intx;x=o;有区别吗?是不是加了static在前面就发生变化了啊?你两个怎么回答的答案刚刚相反啊,谁可以肯定自己是对的?

因为:

如果没有static :

int x = 0;// 声明,并初始化为0

int x; // 声明

// 在此期间访问会遇到随机值(这么做应该被认为是错误的!)

x = 0; // 初始化

如果加了static :

static int x = 0; // 声明并初始化(此时为初始化赋值,如果这条语句出现在函数中,即便被多次调用,也只会执行一次。)

static int x; // 声明并使用默认初始化值

// 在此期间访问会得到静态变量的系统默认值(int型为0)

x = 0; // 赋值为0

扩展资料:

注意事项

1、static全局变量和普通的全局变量

static全局变量在定义该变量的当前源文件内有效, 在同一源程序的其它源文件中不能使用它。而普通的全局变量在各个源文件中都是有效的(当一个源程序由多个源文件组成时)。

2、static局部变量和普通的局部变量

static局部变量存放在静态存储区,其只在当前函数中起作用,但是其生存周期是直到当前程序结束为止,而局部变量存在于栈中。

3、static函数和普通函数

static函数只在当前源文件中起作用,在其他文件中不起作用。普通函数则可在其他源文件中调用。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-05
static int x=0是声明了一个静态变量,同时将他赋值为0
在之后的程序中,如果x的值发生变化,每次调用的结果也会跟着变化
x指向的是一块固定的内存地址,里面的内容会进行改变

static int x;x=0则是先声明了,而后才进行赋值,在赋值操作前,x所指向的内存地址的内容是不能确定的
第2个回答  2009-12-30
如果没有static :

int x = 0;// 声明,并初始化为0

int x; // 声明
// 在此期间访问会遇到随机值(这么做应该被认为是错误的!)
x = 0; // 初始化

如果加了static :

static int x = 0; // 声明并初始化(此时为初始化赋值,如果这条语句出现在函数中,即便被多次调用,也只会执行一次。)

static int x; // 声明并使用默认初始化值
// 在此期间访问会得到静态变量的系统默认值(int型为0)
x = 0; // 赋值为0
第3个回答  2009-12-29
区别在于下次进入该函数时,前者不会再进行赋值操作,后者则会把x赋值为0.
第4个回答  2009-12-30
应该是一样的,static 声明的变量是默认赋值0的。 所以 x=0 完全没有必要。

楼下和我的都是对的。