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

C言語の共用体(union)とは?基本構文とメモリサイズの仕組みを解説

共用体(union)は、C言語におけるユーザー定義型の一つです。共用体のすべてのメンバーは同じメモリ領域を共有するという特徴を持っています。そのため、共用体全体のサイズは、最も大きなサイズを持つメンバーによって決まります。複数のメンバーで同一のメモリ領域を使い回したい場合には、共用体が最適な選択肢となります。

共用体は構造体(struct)とよく似ており、変数の宣言方法も構造体とほぼ同じです。C言語では、キーワード「union」を使用して共用体を定義します。

共用体の定義方法

C言語における共用体の基本的な構文は以下の通りです。

union union_name {
    member definition;
} union_variables;

各要素の意味は次のようになります。

union_name − 共用体に付ける任意の名前です。

member definition − メンバー変数の定義(宣言)です。

union_variable − 定義した共用体のオブジェクト(変数)です。

共用体の使用例

ここで、C言語における共用体の具体的な使用例を見てみましょう。

サンプルプログラム

#include <stdio.h>
#include <string.h>
union Data {
    int i;
    float f;
}data, data1;
int main( ) {
    printf( "Memory size occupied by data : %d\t%d", sizeof(data), sizeof(data1));
    return 0;
}

実行結果

Memory size occupied by data : 44

プログラムの解説

上記のプログラムでは、「Data」という名前の共用体を作成し、同時に共用体オブジェクトも宣言しています。該当するコード部分は以下の通りです。

union Data {
    int i;
    float f;
}data, data1;

この例では、int型のメンバー「i」とfloat型のメンバー「f」が同じメモリ領域を共有しています。多くの環境ではint型とfloat型はどちらも4バイトであるため、この共用体のサイズは4バイトとなり、2つの変数「data」「data1」それぞれに対して4バイトずつ割り当てられていることが実行結果から確認できます。

もし構造体を使用していた場合、各メンバーに個別のメモリが割り当てられるため、合計8バイトが必要になります。このように、共用体を使うことでメモリを効率的に利用できる点が大きなメリットです。

  1. RDBMSの未来はどうなる?BigData・NoSQL時代でも需要が消えない理由

    現在のデータベースソリューションの分野では、BigData(ビッグデータ)やNoSQLが主流の選択肢となっています。しかし、それによってRDBMS(リレーショナルデータベース管理システム)が持つ重要な機能が不要になるわけではありません。 実は、世界中で生成されているデータの約90%がここ数年のものであると言われています。データ量が爆発的に増加している今こそ、構造化データを確実に管理するRDBMSの役割はむしろ高まっており、その需要は近い将来に終わることはないでしょう。 RDBMS市場は年9%の成長を継続 調査会社Gartner(ガートナー)の発表によると、RDBMS市場は年率9%という堅調な

  2. リレーショナルデータベースとは?テーブル構造とSQLの基本を解説

    リレーショナルデータベース(RDB)とはリレーショナルデータベースは、データを複数の「テーブル」に整理して管理するデータベースモデルです。各テーブルは、あらかじめ定義されたカテゴリ(項目)に基づいて構成されており、データはその分類に従って格納されます。テーブルの基本構造:行と列テーブルは「行」と「列」で構成されています。列には特定のカテゴリに対応するデータ項目が入り、行にはそのカテゴリに基づいて定義されたデータの実体が記録されます。この二次元表形式を採用することで、直感的かつ効率的なデータ管理が可能になります。標準インターフェースとしてのSQLリレーショナルデータベースでは、構造化照会言語であ