1つのメモリを共有する「共用体(union)」とは?C言語の特徴的な機能をやさしく解説!
C言語には、「共用体(union)」という特殊なデータ構造があります。
共用体では、異なる型のメンバーを同じメモリ領域で使いまわすことができます。
効率的なメモリ管理や、ハードウェア制御などで使われます。
共用体とは?
共用体(union)は、複数のメンバーを1つのメモリ領域に重ねて定義する構造です。
1つのメンバーに値を代入すると、他のメンバーの値も同じメモリを参照しているため変化します。
共用体の定義方法
union Data {
int i;
float f;
char str[20];
};
共用体の使い方
#include <stdio.h>
union Data {
int i;
float f;
char str[20];
};
int main(void) {
union Data data;
data.i = 100;
printf("int: %d\n", data.i);
data.f = 3.14;
printf("float: %f\n", data.f); // data.i の値は壊れている可能性あり
return 0;
}
構造体との違い
項目 |
構造体(struct) |
共用体(union) |
メモリの使い方 |
すべてのメンバーが独立した領域 |
すべてのメンバーが同じ領域を共有 |
用途 |
複数のデータを同時に使いたいとき |
どれか1つのデータだけ使えばよいとき |
サイズ |
すべてのメンバーの合計 |
最も大きなメンバーのサイズ |
使うときの注意点
- 最後に代入したメンバーの値だけが有効
- 複数メンバーを同時に使うことはできない
- 使いどころは限られるが、省メモリやデータ解釈の切り替えに便利
まとめ
共用体(union)は、異なる型のデータを同じメモリ領域に重ねて定義できる構造です。
一度に1つのメンバーしか使えませんが、メモリの節約や多様なデータの扱いに役立ちます。
初心者の方は、構造体との違いを意識しながら、シンプルな共用体から触れてみるのがおすすめです!