変数とは、プログラムが制御できる記憶領域に割り当てられた名前です。変数のタイプは、変数のメモリのサイズと構成を指定します。
値を挿入する前に変数の型を決定する必要があるため、変数に挿入できる値の範囲は値を挿入する前に計算されます。
変数の範囲
変数のスコープは文字通り変数の存続期間です。これは、変数が有効であるかまだ生きているコード ブロックです。
function poo() { var a; }
「a」関数内で、変数「poo」を宣言します。その変数のスコープはその関数内に残り、その関数の外では使用できません。
プログラミングで変数を利用できる場所は 3 つあります。
- 関数内またはブロック内では、それはローカル変数と言われます
- すべての関数の外で使用される場合、グローバル変数という名前が付けられます。
- 関数パラメータ定義で使用される場合、それは仮パラメータと呼ばれます。
主な違い
- 関数内で宣言された変数はローカル変数と呼ばれますが、変数が関数の外で宣言された場合はグローバル変数と呼ばれます。
- 一方、関数が実行を開始し、関数の終了時に失われる場合、グローバル変数は実行開始時に作成され、プログラムの終了時に失われます。ローカル変数が作成されます。
- ローカル変数にはデータ共有は含まれませんが、データ共有はグローバル変数によって与えられます。
- ローカル変数はスタックに格納されますが、グローバル変数はプログラマによって固定の場所に格納されます。
- ローカル変数の場合はパラメータが必要ですが、グローバル変数の場合は転送する必要はありません。
パラメータ | 地元 | グローバル |
---|---|---|
範囲 | 関数内。 | スコープは関数の外にあります。 |
価値 | 値が初期化されていない場合は、ガベージ値が返されます。 | 値が初期化されていない場合、デフォルトではゼロが与えられます。 |
一生 | 関数が実行を開始すると作成され、関数が終了すると失われます。 | プログラムのグローバル実行が開始される前に作成され、プログラムが終了すると失われます。 |
データ共有 | ありえない。 | 可能。 |
パラメーター | 必須。 | 必須ではありません。 |
アクセス者 | ローカル変数 | プログラム全体を通じてグローバル変数にアクセスできます。 |
メモリストレージ | スタック上。 | コンピュータによって割り当てられた固定の場所。 |
ローカル変数
ローカル変数は、宣言された変数の形式としてプログラミング ブロックまたはサブルーチン内で指定されます。ローカル変数は、関数のブロックが実行される前に存続します。それ以降は自動的に失われます。
ローカル変数の例
public int sum(){ int x =4; int y=5; return x+y; }
ここで、「x」と「y」はローカル変数です。
グローバル変数
コードの関数またはブロックの外側で指定される変数は、グローバル変数と呼ばれます。これは世界的な範囲に及ぶため、プログラムの存続期間にわたって関連性が維持されます。したがって、プログラム内で指定された機能は、シャドウイングされていない限り、プログラム内でその機能にアクセスできます。
グローバル変数の例
int x =4; int y=5; public int add(){ return x+y; }
ここで、「x」と「y」はグローバル変数です。
グローバル変数を使用する利点
- グローバル変数には、プログラム内のすべての関数またはモジュールからアクセスできます。
- モジュールの外で 1 回限りのグローバル変数を宣言するだけで済みます。
- これは、ユーザーがプログラム全体で同じデータに何度もアクセスする必要がある場合に使用されます。
グローバル変数を使用するデメリット
- 非常に多くの変数がグローバルとして宣言され、プログラムの実行が完了するまでメモリ内に留まります。これにより、メモリ不足の問題が発生する可能性があります。
- どの機能でもデータが変更される可能性があります。プログラム内に記述されたステートメントは、グローバル変数の値を変更します。マルチタスク環境では、これにより予測できない結果が生じる可能性があります。
- コードのリファクタリングによりグローバル変数が廃止された場合は、名前が付けられているすべてのモジュールを変更する必要があります。
ローカル変数を使用する利点
- タスクの実行中、変数の値は変更されないというのが、ローカル変数の基本的な意味です。
- 同時に実行されている 1 つの変数が多くのタスクによって変更された場合、結果は予測不能になる可能性があります。ただし、ローカル変数として宣言すると解決します。
- 異なる関数の変数に同じ名前を割り当てることができます。
- 関数が実行されると、変数のメモリが解放されます。
ローカル変数の欠点
- ローカル変数のデバッグ方法は非常に注意が必要です。
- モジュール間でのデータ共有は実現できないため、人気のあるデータは定期的に送信する必要がありました。
- それらのスペクトルは非常に小さいです。
もっと便利なものは何でしょうか?
どの言語でプログラムを作成する場合でも同様に重要なローカル変数とグローバル変数。ただし、グローバル変数が大量にあると、膨大なメモリを占有する可能性があります。グローバル変数への望ましくない遷移を定義することが難しくなってきています。また、不要なグローバル変数の発表を避けることも賢明です。