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

因为:
如果没有static :
int x = 0;// 声明,并初始化为0
int x; // 声明
// 在此期间访问会遇到随机值(这么做应该被认为是错误的!)
x = 0; // 初始化
如果加了static :
【static int x=0;和static int x;x=0;为什么不一样呢?】static int x = 0; // 声明并初始化(此时为初始化赋值,如果这条语句出现在函数中,即便被多次调用,也只会执行一次 。)
static int x; // 声明并使用默认初始化值
// 在此期间访问会得到静态变量的系统默认值(int型为0)
x = 0; // 赋值为0

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

文章插图
注意事项
1、static全局变量和普通的全局变量
static全局变量在定义该变量的当前源文件内有效,在同一源程序的其它源文件中不能使用它 。而普通的全局变量在各个源文件中都是有效的(当一个源程序由多个源文件组成时) 。
2、static局部变量和普通的局部变量
static局部变量存放在静态存储区,其只在当前函数中起作用,但是其生存周期是直到当前程序结束为止,而局部变量存在于栈中 。
3、static函数和普通函数
static函数只在当前源文件中起作用,在其他文件中不起作用 。普通函数则可在其他源文件中调用 。

    推荐阅读