「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

共用体(union)

pointこの用語のポイント

point構造体みたいなやつだよ

pointすべての要素で1つの場所を使いまわすよ

point複数の要素を同時には使えないよ

スポンサーリンク

簡単に書くよ

共用体(union)(読:キョウヨウタイ)とは

構造体(中に入れられる物の種類と数を自分で決められる、変数の型)の仲間
であり

すべての要素で同じ場所を使いまわすから「一度に使えるのは1つの要素」になる(2つ目の要素に値を入れると今まで入っていた値が消える)構造体っぽいやつ
です。


image piyo

詳しく書くよ

順番に見ていきましょう。
まずは予備知識として

変数
変数の型
構造体


について説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。

共用体は構造体の仲間です。
共用体を理解するには、構造体と比較しながら勉強するのが手っ取り早いと思います。
「構造体?よく分かってないよ」な人は、この機会に構造体も覚えてあげてください。

それでは順番に見ていきます。

変数は「プログラミング言語における『値を入れておく箱』」です。
処理の途中で値を入れたり、逆に取り出したりできます。

共用体

変数の型は「この箱(変数)には、どんな種類の物を入れていいですよ」な決まりです。

共用体2

例えば、そうですね。
手ごろな大きさのダンボール箱が あったとしましょう。

共用体3

ピヨ太君がやってきて、その箱にマジックで大きく「食べ物用」と書きました。

共用体4

「食べ物用」と書いたので、このダンボールに入れていいのは食べ物だけです。
食べ物以外を入れようとすると、ピヨ太君にメッチャ怒られます。

共用体5

この話におけるダンボール箱が「変数」です。
マジックで書いた「食べ物用」が「変数の型」になります。

共用体6

変数の型には、いろいろな種類があります。
数字を入れられる箱、文字を入れられる箱、文字列を入れられる箱、いろいろです。

例えば「数字しか入れられませんよ」な箱には数字しか入りません。
文字を入れようとすると怒られます。

共用体7

「文字しか入れられませんよ」な箱には文字しか入りません。
数字を入れようとすると怒られます。

共用体8

構造体は「中に入れられる物の種類と数を自分で決められる、変数の型」です。

例えば、そうですね。

ピヨ太君が「数字を1つと文字を1つ入れられる箱を使おう」と決めたとしましょう。

共用体9

でも、そんな箱は ありません。

共用体10

どうすれば良いでしょうか?

簡単です。

数字を入れられる箱を1つと文字を入れられる箱を1つ持ってきて、それを新しい大きな箱の中に入れてやれば良いのです。

共用体11

そうすると、新しい大きな箱は「数字を1つと文字を1つ入れられる箱」になります。

共用体12

実際には、数字は大きな箱の中にある「数字を入れられる箱」の中に入ります。

共用体13

文字は大きな箱の中にある「文字を入れられる箱」の中に入ります。

共用体14

とはいえ、ピヨ太君から見れば数字も文字も「大きな箱」の中に入れています。

共用体15

この話で出てきた大きな箱が構造体です。

共用体16

構造体の中身は自分で決められます。
今回のピヨ太君は「数字を1つと文字を1つ入れられる箱」を作りましたが「数字を3つと文字を5つ入れられる箱」でもいいですし、それ以外の形でも かまいません。
元々ある型の変数を寄せ集めて新しい型を作れるのが構造体の特徴です。

ここまでの説明で、構造体については何となく分かったでしょうか。
以上を踏まえて、本題に入ります。

ズバリ!

省エネタイプの構造体

が「共用体」です。

……「省エネタイプ」って何だよ!
そう思う人が大半でしょう。

分かっています。

分かっていますって。

これから順番に説明していきます。

先ほどの例でピヨ太君が作った構造体を思い出してください。
「数字を1つと文字を1つ入れられる箱」です。

共用体17

この構造体は、数字を入れられる箱を1つと文字を入れられる箱を1つ持ってきて、それを新しい大きな箱の中に入れたものです。

共用体18

実は、共用体でも「数字を1つと文字を1つ入れられる箱」を作れます。

共用体19

ただし、中身が違います。

構造体の中身は

数字を入れられる箱と文字を入れられる箱が1つずつ

でした。
構造体の中には2つの箱があります。

共用体20

それに対して、共用体の中身は

数字か文字を入れられる箱が1つ

です。
共用体の中には箱が1つしかありません。
この1つの箱を使いまわします。

共用体21

入れられる物は同じですが、中身の構造が違いますよね。

構造体では要素ごとに箱が用意されるが、共用体では全ての要素で1つの箱を使いまわす

のです。

これが構造体と共用体の一番大きな違いです。

構造体では要素ごとに箱が用意されます。
よって

1.文字を入れる
2.数字を入れる
3.文字を取り出す


ができます。

共用体22

共用体では全ての要素で同じ箱を使います。
よって

1.文字を入れる
2.数字を入れる
3.文字を取り出す


ができません。
2で数字を入れた時点で、1で入れた文字は潰れちゃうからです。

共用体23

似ているけど違いますよね。

構造体も共用体も「中に入れられる物の種類と数を自分で決められる、変数の型」です。
元からある型の変数を寄せ集めて新しい型を作れます。
数字も文字も入る変数を作ったりできます。
これが構造体と共用体の似ている点です。

共用体24

構造体では複数の要素を同時に使えますが、共用体では複数の要素を同時に使えません。
共用体では、2つ目の要素を入れた時点で1つ目の要素に入れた値は消えてしまいます。
これが構造体と共用体の違う点です。

共用体25

なお、共用体はプログラミングが得意な人がカッコ付けたソースコードプログラムの元ネタ)を書きたいときに使うものです。
「分かったような分からないような……」であれば使わない方が無難だと思います。

共用体を使わなくても同じような処理を書けますからね。
不具合を入れてしまうくらいなら、素直に分かりやすい書き方をしてください。


image piyo2

一言でまとめるよ

まぁ「共用体」って単語が出てきたら「省エネタイプの構造体(中に入れられる物の種類と数を自分で決められる、変数の型)(みたいなやつ)なんだな~」と お考えください。

一番上に戻るよ
スポンサーリンク
書籍画像009
書籍画像038


書籍画像
わわわ説明術コラム
宣伝だよ
「分かった!」と思わせる説明の技術 知識ゼロの相手にも伝わるようになる本【Audible】
実務で役立つ ログの教科書 基礎知識から収集方法・分析手法・トラブルシューティング・パフォーマンス最適化・機械学習での活用まで
あたえる人があたえられる