• 締切済み

『関数内static変数』の別名って??

1、『関数内static変数』の別名で一言の呼び方ってありますか?? 2、『static変数』と呼ぶときは通常、ファイル内で有効な変数(この場合だとファイルローカルな変数??)と考えてよいのですね? おねがいしますm(_ _)m

みんなの回答

回答No.2

static 変数のもともとの意味は、(Cだと)auto 変数と対比されるもので、呼び出しの度に初期化されない変数のことです。 これは、関数を含むブロックにの中にある変数ですと、そのままの意味で問題ないわけです。 int func() { int n = 0; n++; return n; } の n は、呼び出される度に生成されて初期化されるので、func() の返値は、毎回1です。 これに対して、 static int n = 0; だと、1度しか、生成・初期化されませんから、func() を呼び出す度に返値は変化します。 さて、このようなわけなので、本来、関数やブロックの外にある変数に、static をつけてもつけなくても同じ挙動を示すはずです。 というのとは全く関係なく、関数やブロックの外にある変数(や関数)に、static をつけた時には、外部から参照できないといういみに「してしまおう」というのが、C言語の流儀です。 ですから、C言語では、トップレベルの宣言で、static が付くと、ふぁいっろー刈るになるという、特別な意味づけをしているというのが、むしろ、正解です。

  • rabbit_cat
  • ベストアンサー率40% (829/2062)
回答No.1

1. ローカルstatic(静的)変数? 一言じゃないけど。 2. C/C++限定なら、まあほぼそう考えていいとは思います。 ただ、静的変数という言葉自体は、 プログラミング言語の世界で一般的に使われる用語で、 C/C++以外の言語では必ずしもファイルローカルとは限らない。 また、C/C++でも、(extern宣言した)グローバル変数を指して静的変数ということも全くないとは言えない気もするので、 文脈によっては断定は危険か。

関連するQ&A