私は学生で、C および C++ のグローバル変数とファイル スコープ変数について混乱しています。両方の視点に違いはありますか?はいの場合、詳細に説明してください。
5 に答える
file scope
識別子の宣言がブロックの外にある場合、名前は持っています。ファイル スコープと内部リンケージを持つ名前は、宣言された時点から翻訳単位の最後まで表示されます。
Global scope
またはglobal namespace scope
、プログラムの最も外側の名前空間スコープであり、オブジェクト、関数、型、およびテンプレートを定義できます。識別子の宣言がすべてのブロック、名前空間、およびクラスの外にある場合、名前はグローバル名前空間スコープを持ちます。
例:
static int nValue; // file scoped variable
float fValue; // global variable
int main()
{
double dValue; // local variable
}
詳細はこちらをご覧ください。
ファイル スコープ: すべてのブロックまたはクラスの外部で宣言された名前には、ファイル スコープがあります。宣言後、翻訳単位のどこからでもアクセスできます。静的オブジェクトを宣言しないファイル スコープを持つ名前は、多くの場合、グローバル名と呼ばれます。
C++ では、ファイル スコープは名前空間スコープとも呼ばれます。
今これを注意深く読んでください。
プログラム/コードの先頭でこれらの#include<'...'.h>ステートメントを使用します。そこで実際に行っているのは、これらの*h *eader ファイルに事前に記述された関数を参照するようにコンピューターに指示することです。つまり、これらの関数にはファイル スコープがあります。ヘッダファイル。
関数の外部で宣言された変数には「ファイル スコープ」があります。つまり、変数はファイル内で表示されます。ファイル スコープで宣言された変数は、宣言とコンパイル ユニット (.c ファイル) の終わりの間で可視であり、暗黙的に外部リンケージを持っているため、.c ファイルまたはそれらの宣言を含むコンパイル ユニットだけでなく、他のすべての変数からも可視です。完全なプログラムを形成するためにリンクされているコンパイル単位。
グローバル変数は、名前が示すように、グローバルに (どこからでも) アクセスできると見なすことができます。