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

C++での変数の初期化|静的初期化と動的初期化の違いを解説


C++における変数の初期化とは

変数とは、ユーザーが任意につける名前のことで、データを格納するための「箱」のような役割を持ちます。変数を宣言・初期化する際にはデータ型を使用し、その変数用のメモリが割り当てられます。C++にはint(整数型)、char(文字型)、float(浮動小数点型)など、用途に応じたさまざまなデータ型が用意されています。

変数の初期化方法は、大きく分けて次の2つがあります。

  • 静的初期化(static initialization) − プログラムのコード内であらかじめ値を代入する方法
  • 動的初期化(dynamic initialization) − プログラムの実行時(ランタイム)に値を代入する方法

変数初期化の基本構文

変数の初期化は、以下の構文で行います。

datatype variable_name = value;

各要素の意味は次のとおりです。

  • datatype − int、char、floatなど、変数のデータ型を指定します。
  • variable_name − ユーザーが自由に決められる変数の名前です。
  • value − 変数を初期化するための任意の値です。特に指定しない場合、初期値は0(ゼロ)として扱われます。

変数初期化のサンプルコード

以下は、静的初期化と動的初期化の両方を組み合わせたC++のサンプルプログラムです。

#include <iostream>
using namespace std;
int main() {
    int a = 20;   // 静的初期化
    int b;
    cout << "The value of variable a : " << a;
    cout << "\nEnter the value of variable b : ";
    cin >> b;     // 動的初期化
    cout << "\nThe value of variable b : " << b;
    return 0;
}

実行結果

The value of variable a : 20
Enter the value of variable b : 28
The value of variable b : 28

プログラムの解説

上記のプログラムでは、aとbという2つのint型変数を宣言しています。

int a = 20;
int b;

変数aは、宣言と同時にプログラム内で値20を代入して初期化しています。これが静的初期化です。一方、変数bは宣言時には値を持たず、実行時にcinによってユーザーからの入力を受け取って初めて値が決まります。これが動的初期化です。

cout << "The value of variable a : " << a;   // 静的初期化された値を表示
cout << "\nEnter the value of variable b : "; // 入力を促すメッセージ
cin >> b;                                     // 実行時に値を入力(動的初期化)
cout << "\nThe value of variable b : " << b;

補足:モダンC++の初期化方法

C++11以降では、中括弧 { } を使った「一様初期化(uniform initialization)」も推奨されています。

int a{20};  // 一様初期化

この書き方は、意図しない型の縮小変換(ナローニング)をコンパイラが検出してくれるため、より安全なコードを書くことができます。

  1. C++のポインタ演算子*とは?間接参照演算子の基礎と使い方を解説

    C++の2つのポインタ演算子C++には、ポインタを操作するための演算子として、アドレス演算子(&)と間接参照演算子(*)の2つが用意されています。ポインタとは、別の変数のアドレス(メモリ上の場所)を格納する変数のことです。つまり、他の変数のアドレスを保持している変数は、その変数を「指し示している(ポイントしている)」と表現されます。ポインタが指し示す対象は、オブジェクトや構造体、さらにはポインタ自身を含む、あらゆるデータ型が可能です。間接参照演算子(*)とは間接参照演算子(*)は、アドレス演算子(&)と対になる演算子です。単項演算子の一種で、オペランドに指定されたアドレスに格納

  2. C++でvolatile(揮発性)修飾子を使う理由とは?2つの重要な意味をわかりやすく解説

    C++におけるvolatile修飾子には、主に次の2つの重要な意味があります。これらを正しく理解することで、組み込み開発などでvolatileを適切に使いこなせるようになります。 volatileが持つ2つの意味 1. 変数の値はコード外の要因で変化する可能性がある volatile付きの変数は、プログラマが書いたコードによって変更していなくても、ハードウェアやOSなどの外部要因によって値が変わる可能性があります。そのため、コンパイラはこの変数の値を読み取るたびに、「前回読み取った値と同じだろう」「最後に格納した値のままだろう」といった仮定をすることができません。必ずその都度、実際にメモリ