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函数只在当前源文件中起作用,在其他文件中不起作用。普通函数则可在其他源文件中调用。