关于static的作用,static的作用就是只能一次初始化是吧,那么怎么样才算初始化呢,

图片说明第一个箭头的地方不能理解为重新赋值吗,这个程序里面我把为什么我第二个箭头指的地方就可以从定义,而第一个的地方不可以呢

初始化就是第一次,难道你要很多第一次??
好吧!我有点邪恶了!
静态全局变量有以下特点:
1.该变量在全局数据区分配内存;
2.未经初始化的静态全局变量会被程序自动初始化为0
3.静态全局变量在声明它的整个文件都是可见的,而在文件之外是不可见的;

static声明个全局变量,所以在每个函数中调用都没问题,但是你在函数块外随便进行操作,恐怕编译器不能允许吧。

  1. 在函数外定义全局变量时,可以初始化,也可以不初始化。在函数用这个变量时初始化也可以。但是不能在函数外单独写语句,类似 j=2;
    这是语法错误。所以第一个位置是语法错误。

  2. 在第二个位置可以有j=2; 除了定义变量等语句可以在函数外,其他普通语句必须在函数内。
    比如:你不能把pritf("ok"); 放到函数外。

  1. 在全局变量前加static的作用:限制改变量只能在本文件可用,本文件之外是不可见的。和extern相对应。
  2. 在函数内部定义变量前加static的作用:该变量是静态局部变量,在定义时就要初始化,且只执行一次初始化。

静态变量(static).静态变量之所以是因为静态,是因为他在整个程序生命周期的地址静止不变。也就是说在整个程序里面只保存有一份拷贝。static关键字允许它在不同的函数调用间保持它的值。如果一个静态变量被访问后值改变,它就会保持新的值。如果这变量再次被访问,它将会维持最新的值

静态变量只是地址不会变,只初始化一次,C的不是很清楚。初始化这个东西有些时候看怎么理解了,Java中指类加载的时候。