「global変数とstatic変数の違いがよくわからない」という人の大半は、 教科書を読んで、global変数も、static変数も、「値が保持されるんだな」というイメージを持ってしまっている点にあると思われる。 たとえば、global変数は、local変数と異なり、スコープ外へ出ても値が保持される。 本来は、global変数は「どこから全てのスコープからアクセスできる変数」のことなのだが、local変数がスコープの外へ出ると値が無くなるという風に説明されるため、 対比として「スコープの外へ出ても値が保持されるんだな」と本来の概念とは異なった意味で理解してしまう。 次に、staticローカル変数だが、 そもそも、static変数の元々の意味は、呼び出しの度に初期化されない変数のこと。すなわちglobalではなくて、自動変数(auto変数)と対比される。 static変数もまた、スコープを