コードを命令シーケンスに変換するとき、コンパイラはローカル変数とグローバル変数をどのように区別しますか?
次に、定数は命令セットと共に格納され、文字列はメモリの定数ブロックへのポインタを介して格納されると考えるのは正しいですか?
コードを命令シーケンスに変換するとき、コンパイラはローカル変数とグローバル変数をどのように区別しますか?
次に、定数は命令セットと共に格納され、文字列はメモリの定数ブロックへのポインタを介して格納されると考えるのは正しいですか?
あなたが探している答えは、コンパイラがローカル変数をローカルなものにスコープすることだと思います(たとえば、関数では、関数内の変数は関数にスコープされます。クラスでは、変数はクラス)。グローバル変数の場合、変数はプログラムまたはシステム全体にスコープされます。この用語が両方の方法で使用されているのを見てきました。
例:
program P {
variable myGlobal
function F {
variable myFunction
}
}
上記の例では、myGlobal 変数はプログラム P のすべてにスコープされるため、関数 F は myGlobal を参照できます。myFunction は関数 F でのみ表示されます。
グローバル変数は、システム全体の変数 (IP アドレス、OS バージョンなど) を意味するために使用されることがあります。
スコープは非常に大きなトピックです。このトピックに関するウィキペディアのエントリを確認してください: http://en.wikipedia.org/wiki/Scope_(computer_science)
これらも役立つ場合があります: http://en.wikipedia.org/wiki/Global_variableおよびhttp://en.wikipedia.org/wiki/Local_variable