ストレージと変数のスコープ

初期化と代入の違いは何ですか?

  1. 初期化:宣言は新しいメモリ領域を描画しますときに、同時に変数への代入を宣言し、
  2. 割り当て:

保存方法変数:静的ストレージと動的ストレージ。

  1. 静的ストレージ:変数が定義され、プログラム全体を通して、メモリユニットの一定量を割り当て、専用メモリ部を初期化することができ、一度に複数回割り当て、静的記憶変数が初期化されていない、初期値が0で変わりません。

  2. 動的ストレージ:機能ユニットの宣言が着信引数にメモリを割り当てていない場合、プログラム実行中の任意のメモリ・セルを割り当て、使用後に解除され、そのような関数パラメータのパラメータの形態では、動的記憶装置であり、。機能が完了すると、メモリが解放される。動的記憶変数の初期化場合にメモリを割り当てるために、その後、初期値は乱数です。


ストレージの変数を宣言するには?

  1. グローバル変数は静的グローバル変数およびグローバル変数、静的記憶装置を含む初期値が0でない、従ってない、静的ローカル変数は、動的ローカル変数は、動的記憶装置であり、スタティックメモリです。

  2. プラス静的プレフィックスは、次のような静的記憶変数であり、static int a = 0;

  3. 静的デフォルトの接頭辞なしのような動的記憶変数、であるint b = 1;(それはグローバル変数であればそれほど静的なストレージです。)


メモリ、ストレージ容量の割り当て:

  1. 動的記憶領域:動的変数を格納するメモリ領域、すなわち記憶、そのような関数のパラメータ、無接頭プラス静的ローカル変数(すなわち、動的ローカル変数)として、関数はアドレスを返します

  2. 静的記憶領域:このようなグローバル変数、静的グローバル変数(動的なグローバル変数)などの静的ストレージモード、可変メモリの記憶領域。

  3. プログラム領域:ストレージ・プログラム文。


変数のスコープ:ローカルおよびグローバル。

  1. グローバル変数:すべての外部関数の定義では、すべての機能はデフォルトでは0時00分に初期化されていない、グローバル変数は静的記憶されている呼び出すことができます(主な機能を含む);.

  2. ローカル変数:内部関数定義は、唯一の現在の機能には適用されない場合、初期化、静的ストレージ、または0の場合、もしランダム値と比較ダイナミックストレージ、。

静的なグローバル変数とグローバル変数の違いは?

  1. 彼らは、スタティックメモリは、ダイナミックメモリ変数は静的なグローバル変数は、現在のファイル、初期値0に適用され、主に異なるスコープ存在しないことに注意してください...。
  2. 異なる変数は、2つの同一の変数名がある場合は小さい値も初期関数スコープ0である間にexternグローバル変数は、ファイルの他のタイプに使用することができます;

静的ローカル変数(動的)ローカル変数の違いは?

  1. 同じスコープが、異なるメモリ放出期間を有する。動的ローカル変数関数の実行が終了した後、メモリが解放される。次のコール荘では、乱数の初期値を初期化します。

  2. そして、プログラムメモリ全体で静的ローカル変数ではリリースされていない、または初期値の最後の値は0、次の呼び出しであります;


なぜ静的記憶装置は、ダイナミックランダム数と比較ゼロの初期値を、初期化されませんか?

おすすめ

転載: www.cnblogs.com/just-save/p/11765474.html