【C++】データ型の種類を徹底解説(基本型からポインタ、構造体まで)

目次

はじめに

C++プログラミングの根幹をなすのが「」の概念です。全ての変数やオブジェクトは、必ず何らかの型を持ち、その型によって、どのような値を保持できるか、どのような操作が可能かが決まります。

この記事では、C++の型システムを構成する主要なデータ型について、その役割と使い方を網羅的に解説します。


1. 基本型 (Fundamental Types)

C++言語に組み込まれている、最も基本的なデータ型です。

説明
bool真偽値 (true / false)bool is_active = true;
char1バイト文字char initial = 'A';
int整数int score = 100;
double倍精度浮動小数点数double pi = 3.14;

その他、short, long, long long, float, wchar_t など、サイズや精度の異なる様々な基本型があります。


2. 複合型 (Compound Types)

基本型を組み合わせて作られる、より複雑な型です。

配列

同じ型の要素を、連続したメモリ領域に複数格納します。

// 5つの整数を格納する配列
int scores[5];
scores[0] = 90; // 最初の要素にアクセス

ポインタ (*)

他の変数のメモリアドレスを格納するための変数です。*(間接参照)で指し示す先の値に、&(アドレス)で変数のアドレスを取得します。

int value = 10;
int* p_value = &value; // valueのアドレスをp_valueに格納
*p_value = 20;         // p_valueが指す先(value)の値を20に変更

参照 (&)

既存のオブジェクトの**別名(エイリアス)**として振る舞います。宣言時に必ず初期化が必要で、後から別のオブジェクトを指すようには変更できません。

int original = 100;
int& alias = original; // aliasはoriginalの別名
alias = 200;           // aliasを変更すると、originalも200になる

3. ユーザー定義型 (User-Defined Types)

プログラマが独自に定義する新しいデータ型です。

列挙型 (enum)

関連する一連の整数定数に、分かりやすい名前を付けます。

// スコープ付き列挙型 (C++11)
enum class Signal { Red, Yellow, Green };
Signal light = Signal::Red;

if (light == Signal::Red) { /* ... */ }

enum class を使うと、列挙子が名前空間のようにスコープを持つため、名前の衝突を防げます。

構造体 (struct) と クラス (class)

異なる型の複数の変数を、一つのまとまりとして扱うための設計図です。データ(メンバ変数)と操作(メンバ関数)をカプセル化します。

struct Player {
    string name;
    int level;
};
Player hero;
hero.name = "勇者";
hero.level = 10;

共用体 (union)

複数のメンバが、同じメモリ領域を共有する特殊な構造体です。一度に一つのメンバしか有効な値を保持できません。

union Data {
    int i;
    float f;
    char str[4];
};

ビットフィールド

構造体の中で、メンバ変数が使用するビット数を明示的に指定できます。メモリを極限まで節約したい場合や、ハードウェアレジスタを直接操作する際に使います。

struct Flags {
    unsigned int is_active : 1; // 1ビット
    unsigned int mode      : 2; // 2ビット
    unsigned int           : 5; // 5ビットの空き
};

まとめ

今回は、C++の型システムを構成する主要なデータ型を網羅的に解説しました。これらの型を正しく理解し、適切に使い分けることが、安全で効率的なC++プログラムを書くための基礎となります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次