共用体と構造体とは何か?基本を理解しよう
プログラミングを始めるとよく出てくる言葉に「共用体(union)」と「構造体(struct)」があります。
これらは両方とも複数の異なるデータをひとまとめに扱うための仕組みですが、使い方や特徴が異なります。
まずはそれぞれの基本的な意味を押さえましょう。
構造体は、一つのまとまりとして複数のメンバー変数を持ち、
それぞれが独立してメモリ上に存在します。
一方、共用体は複数のメンバー変数を宣言できますが、
それらは同じメモリ領域を共有していて、同時に一つの値しか保持できません。
この違いを理解すると、プログラムのメモリの使い方や動作が見えてきます。
共用体と構造体のメモリの違いを詳しく解説
それでは、共用体と構造体のメモリの扱い方を具体的に見てみましょう。
構造体の場合は、メンバーそれぞれに独立したメモリ領域が割り当てられます。
例えば、3つのint型変数を持つ構造体があれば、それぞれのint分だけのメモリが順番に並んで確保されます。
一方、共用体はメンバーすべてが同じ場所に重なって配置されるため、
メモリのサイズは一番大きなメンバー1つ分だけで済みます。
この特徴から、メモリ使用量を節約したい場合によく使われますが、
同時に複数のデータを保持することはできません。
下の表に簡単にまとめてみました。
able border="1">特徴 | 構造体 | 共用体 |
---|
メモリサイズ | メンバーの合計サイズ | 最大のメンバーサイズ |
同時保持できるデータ数 | 複数同時に保持可能 | 一つだけ |
用途 | 複数データをまとめて扱いたい時 | メモリ効率を優先する時 |
ピックアップ解説「共用体」の面白いところは、メモリを節約できる反面、ひとつの変数で複数の型を見せかけて使い分けられることです。例えば、1つの共用体変数でintに見せたりfloatに見せたりできるんです。これはプログラマにとっては便利ですが、中身のデータが何の型か正確に把握しないとバグのもとにもなります。だからデバッグ時によく注意が必要なんですよ。
ITの人気記事

64viws

62viws

54viws

53viws

44viws

40viws

40viws

38viws

38viws

35viws

35viws

33viws

32viws

29viws

27viws

26viws

26viws

24viws

24viws

23viws
新着記事
ITの関連記事