5

静的変数は通常、(ほとんどのプログラミング言語で) 共有され、永続的であり、プログラムのコード セクションに割り当てられます。

しかし、それは静的という言葉と何の関係があるのでしょうか? それについて何がそんなに静的ですか?って思っstaticたけど変わらない?

たとえば、vb.net では static は shared と書かれています。これは、オブジェクトのインスタンス化なしでアクセスできるメンバー関数を意味します。関数内で静的とは、通常、変数の寿命がプログラム全体の寿命であることを意味します。静的変数はコンピューターのコード セクションに格納されているようです。例に基づいた私の理解は正しいですか?

4

7 に答える 7

20

そうですね、キーワードは適切だと思います。これは、静的として宣言した変数が、プログラムの実行全体を通じて同じ場所に格納されたままになることを意味します。

静的手段は変わらないと思っていた

これはconstキーワードに対応します。Const は変更されないことを意味し、static は「移動」しないことを意味します。これは、同じ場所に保存されたままになるためです。

于 2013-02-15T10:42:00.760 に答える
8

一般に、プログラミング言語で静的なもので変わらないのは、それが生きているかどうかです。静的変数は常に生きています。それらには、プログラムの開始時または最初に表示されたときに発生し、プログラムの終了まで続く単一のインスタンスがあります。非静的変数は、ブロックが出入りするとき、またはクラスインスタンスが作成されて破棄されるときに出入りします。

C ++では、Cの互換性のため、名前空間スコープで変数に適用された場合、静的は完全に無関係な意味を持ちます。つまり、変数が外部リンケージではなく内部リンケージを持ち、他の変換単位では表示されないことを意味します。Cの初期になぜ静的という言葉がこれに採用されたのか、私にはわかりません。私は彼らが何かを必要としていて、新しいキーワードを導入したくなかったと推測することができるだけです。(元々、Cの非常に初期のバージョンでは、ファイルスコープの変数は、Fortranという名前の共通ブロックの規則に従いました。同じ名前のすべての変数は同じストレージを参照していました。)もちろん、振り返ってみると(20/20後知恵で) 、ファイルスコープでの変数のデフォルトは、特別なキーワードを使用した内部リンケージである必要があります(public?)変数が外部リンケージを持っていたと言うこと。しかし、これは1970年代初頭にはそれほど明白ではありませんでした。

于 2013-02-15T11:01:44.653 に答える
3

静的は変数ストレージを参照します。関数呼び出し内では、宣言したすべての変数がスタックにプッシュされます。他の変数とは異なり、静的変数はスタックにプッシュされません。グローバル変数のようなもので、プログラムの実行全体を生き残り、ブロック内でのみ目に見える違いが宣言されます。

于 2013-02-15T10:39:53.020 に答える
1

コンピューター サイエンスにおける「静的」の意味を学ぶだけでよいと思います。それを話し言葉の英語と関連付けないでください。特に変数と関数に適用されるため、C では結果がわずかに異なります。

于 2013-02-15T10:40:48.893 に答える
1

回避できる場合は、C++ の static に入らないでください。現代の言語では、静的とは、インスタンスが 1 つだけ存在し、それが破棄されることはないことを意味します。これは英語の意味からかけ離れたものではなく、const/final/readonly とそれが何を意味するかについての議論にうまくつながります。

于 2014-04-09T05:29:04.410 に答える
1

http://dictionary.reference.com/browse/static?s=tからの単語の定義

  1. 固定または定常状態に関係するか、またはそれによって特徴付けられる。
  2. ほとんどまたはまったく変化を示さない: 静的​​な概念。静的な関係。

静的変数は、スコープに戻るたびに再初期化される非静的変数とは対照的に、スコープ外に出た後でもその状態を維持する変数です。したがって、「定常状態」を持つという観点から考えることができます。 」または「変化なし」を出品

于 2013-02-15T11:11:40.753 に答える