file1.cとfile2.cで、それぞれ、static int n = 1; とstatic int n = 2; と宣言されていたら、 この二つのnはそれぞれ別の変数になる。 それぞれ1と2で初期化される。 file1.cで宣言されたnはfile1.cの中からしかアクセスできない。よそからは見えない。 file2.cで宣言されたnはfile2.cの中からしかアクセスできない。よそからは見えない。
file1.cとfile2.cで、それぞれ、int n = 1; とextern int n; と宣言されていたら、 この二つのnは同じ変数になる。 1で初期化される。 file1.cとfile2.cでnを書き換えると、同じ変数だから、とうぜん、file1.cとfile2.cから みえるnは同じように書き換えられる。