C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++の変数入門:型の種類とスコープ(ローカル変数・グローバル変数)の基礎

C++における変数と型

C++では、すべての変数が特定の「型」を持っています。この型によって、次の3つの要素が決まります。

  • 変数が占めるメモリのサイズとレイアウト
  • そのメモリに格納できる値の範囲
  • 変数に対して適用できる演算・操作の種類

変数の宣言は、次の書式で行います。

type variableName;

指定できる型には、intboolfloatchar などの基本データ型(プリミティブ型)のほか、列挙型、他の型へのポインタ、さらに構造体やクラスで定義されたより複雑な型があります。

変数のスコープとは

スコープ(scope)とは、プログラムの中で変数が有効となる領域のことです。大まかに分けると、変数を宣言できる場所は次の3つあります。

  • ローカル変数:関数またはブロックの内部で宣言される変数
  • 仮引数(形式パラメータ):関数のパラメータ定義として宣言される変数
  • グローバル変数:すべての関数の外側で宣言される変数

ローカル変数は、その関数やブロック内のステートメントからしか利用できません。他の関数から直接参照することはできない点に注意しましょう。

ローカル変数の例

#include <iostream>
using namespace std;

int main () {
    // ローカル変数の宣言
    int a, b;
    int c;

    // 実際の初期化
    a = 10;
    b = 20;
    c = a + b;

    cout << c;
    return 0;
}

実行結果

30

グローバル変数

グローバル変数は、すべての関数の外側、通常はプログラムの先頭付近で定義されます。グローバル変数はプログラムが実行されている間ずっと値を保持し続け、プログラム内のどの関数からでもアクセスできるのが特徴です。

グローバル変数の例

#include <iostream>
using namespace std;

// グローバル変数の宣言
int g;

int main () {
    // ローカル変数の宣言
    int a, b;

    // 実際の初期化
    a = 10;
    b = 20;
    g = a + b;

    cout << g;
    return 0;
}

実行結果

30

ローカル変数とグローバル変数の名前が同じ場合

ローカル変数とグローバル変数に同じ名前を付けることも可能ですが、関数内ではローカル変数の値が優先されます。同名のグローバル変数にアクセスしたい場合は、スコープ解決演算子 ::(ダブルコロン)を使用します。

スコープ解決演算子の例

#include <iostream>
using namespace std;

// グローバル変数の宣言
int g = 20;

int main () {
    // ローカル変数の宣言
    int g = 10;

    cout << g;   // ローカル変数を出力
    cout << ::g; // グローバル変数を出力
    return 0;
}

実行結果

10
20

まとめ

C++の変数は、宣言された場所によって有効範囲(スコープ)が変わります。関数内で宣言したローカル変数はその関数内でのみ有効であり、関数の外で宣言したグローバル変数はプログラム全体からアクセスできます。両者に同じ名前を使う場合は、ローカル変数が優先されるため、グローバル変数を参照する際にはスコープ解決演算子 :: を使うことを覚えておきましょう。

  1. C++で円と長方形の重なりを判定するアルゴリズム

    問題の概要円を (radius, xc, yc) という形式で表します。ここで (xc, yc) は円の中心座標です。同様に、軸に平行な長方形(軸平行境界ボックス)を (x1, y1, x2, y2) という形式で表し、(x1, y1) が左下隅の座標、(x2, y2) が右上隅の座標とします。このとき、円と長方形が互いに重なっているかどうかを判定する必要があります。たとえば、次のような入力が与えられた場合を考えてみましょう。この場合、出力は true(重なりあり)となります。解決のアプローチこの問題を解く鍵は、「長方形の中で円の中心に最も近い点」を見つけることです。その点と円の中心との距離が

  2. フリップフロップの種類と相互変換の方法を徹底解説

    フリップフロップ(flip-flop)は、順序論理回路の基本要素となるデジタル回路です。フリップフロップにはいくつかの種類があり、本記事では代表的な4種類の特徴と動作、さらに「あるフリップフロップから別のフリップフロップへ変換する」ための具体的な手順を解説します。フリップフロップには主に以下の4種類があります。SRフリップフロップDフリップフロップJKフリップフロップTフリップフロップSRフリップフロップとはSRフリップフロップは、クロック信号の立ち上がりエッジまたは立ち下がりエッジでのみ動作します。一方、SRラッチはイネーブル信号によって動作する点が異なります。SRフリップフロップの回路図を