logo

C++ グローバル変数

前提条件 : C++ における変数、関数のスコープ

C++ プログラミング言語では、変数とは、さまざまなデータ型を格納するためにメモリに提供される名前です。変数の値はプログラムの実行中にいつでも変更でき、各変数には、指定された名前を使用して変数にアクセスすることが有効な独自のスコープ (または領域) があります。



プログラミングでは、変数はすべて等しいわけではありません。プログラム内でのそれらの範囲、存続期間、およびアクセシビリティは、それらがどこでどのように宣言されるかによって異なります。変数にはスコープに基づいて 2 つのタイプがあります。

    ローカル変数 – これらの変数のスコープは、変数が宣言されているブロック内にのみ存在します。つまり、この変数にはそのブロック内でのみアクセスできます。グローバル変数 – グローバル変数は、可能な限り最も広いスコープを持つ特別なタイプです。これは、すべての関数とブロックの外側、プログラムの先頭で宣言されます。これらはプログラムのどの部分からでもアクセスできます。

C++ のグローバル変数

グローバル変数は、関数またはクラスの外部で宣言され、プログラムのどの部分からもアクセスできる変数です。これらは通常、ヘッダー ファイルの後のソース ファイルの先頭で宣言されます。これらはプログラムの存続期間全体を通じて利用でき、プログラム内のどこからでもアクセスできます。

C++ でのグローバル変数の宣言

グローバル変数を作成するには、ソース ファイルの先頭、ヘッダー ファイルの後、main 関数の前でグローバル変数を宣言するだけです。 C++ では、すべての変数を使用前に宣言する必要があります。



例1

C++






// C++ Program to illustrate Global Variable> // header files> #include> using> namespace> std;> > // global variable> int> x = 10;>// x is a global variable initialized to 10> > // main function> int> main()> {> >cout << x;> >return> 0;> }>

セレンを学ぶ

>

>

出力

Javaでこんにちは世界
10>

説明

  • この例では、「x」は整数値を格納できるグローバル変数です。
  • プログラム起動時に 10 に初期化されます。
  • これは関数またはクラスの外で宣言されるため、プログラム内の関数またはクラスからアクセスおよび変更できます。

さて、なぜプログラムでグローバル変数を使用する必要があるのか​​疑問に思う人もいるかもしれません。

例 2

C++




// C++ program to illustrate> // usage of global variables> #include> using> namespace> std;> > // global variable> int> global = 5;> > // global variable accessed from> // within a function> void> display() { cout << global << endl; }> > // main function> int> main()> {> >display();> > >// changing value of global> >// variable from main function> >global = 10;> >display();> }>

脚注のマークダウン
>

>

出力

5 10>

説明

  • この例では、「int global」は整数値を格納するグローバル変数です。
  • プログラム起動時に5で初期化されます。
  • その後、呼び出しは main 関数に進み、次にグローバル変数を出力する表示関数を呼び出します。
  • 5 を出力した後、グローバル変数の値は 10 に変更されます。ここで再び表示関数が呼び出され、変数 global の新しい値 10 が出力されます。

グローバル変数を使用する利点

グローバル変数が提供する主な利点を次に示します。

  • グローバル変数は、プログラム内で引数を渡さずに、すべての関数から直接アクセスできます。
  • グローバル変数は、多くの関数が同じ変数にアクセスする場合に非常に便利です。
  • グローバル変数は、プログラム内で 1 回宣言するだけで済みます。

グローバル変数を使用する場合の欠点

グローバル変数にはいくつかの欠点もあります。そのうちのいくつかは次のとおりです。

  • 場合によっては、複数のプログラムが同時にグローバル変数を変更しようとするため、一般にマルチスレッド プログラムでグローバル変数が競合の問題を引き起こす可能性があります。
  • 場合によっては、変数のシャドウイングが発生する可能性があります。
  • グローバル変数により、コードが読みにくくなり、保守しにくくなる可能性があります。
  • また、プログラムのどの部分からも変更またはアクセスできるため、セキュリティとバグの懸念もあります。
  • グローバル変数でより大きな数値を使用すると、プログラムでエラーが発生する可能性が高くなります。

結論

グローバル変数は非常に便利ですが、C++ プログラミング言語では変数を「追跡するのが困難」です。これらはプログラムのどの部分でも同じ変数にアクセスできるため便利ですが、コードの読みやすさや保守性が低下しないように使用し、セキュリティ面にも配慮する必要があります。したがって、グローバル変数はあまり使用せず、慎重に使用し、可能な場合は常にローカル変数または他の代替変数を使用することをお勧めします。