ニコニコ大百科モバイル

7/2(月)よりスマホまたはPCでアクセスした場合、各デバイス向けのサイトへ自動で転送致します


構造体


ヨミ: コウゾウタイ
掲示板をミル!
3カキコ!

構造体とは、プログラミング言語において複数のデータをまとめるためのデータ構造の1つである。


概要


プログラムで扱われるデータには、同時にまとめて扱われるものが存在する場合がある。そのようなデータを扱うのに便利なのが構造体である。

例えば、複素数の計算を行うプログラムを考えてみよう。複素数を標準で扱えないプログラミング言語も多いが、そのようなプログラミング言語では、その複素数の実部と虚部は別のデータとして異なる変数に格納されなければならない。構造体を用いない場合のコードは以下のようになるだろう。

int multiply_real(int a_real, int a_imaginary, int b_real, int b_imaginary) {
    return a_real * b_real - a_imaginary * b_imaginary;
}

int multiply_imaginary(int a_real, int a_imaginary, int b_real, int b_imaginary) {
    return a_real * b_imaginary + a_imaginary * b_real;
}

これでも複素数計算が実装できると言えばできるのだが、実部と虚部という本来同時に扱われるものを別々に扱わなければならないとなると、コード読み辛くなり混乱の元にもなる。そういう本来同時に扱われるべきデータは同じ変数にまとめてしまえるようにする、というのが構造体の基本的な考え方である。構造体を使った疑似コードは以下のような感じになる。(実際のコードプログラミング言語によって書き方が異なる。)

struct complex {
    int real;
    int imaginary;
}

complex multiply(complex a, complex b) {
    complex result;
    result.real = a.real * b.real - a.imaginary * b.imaginary;
    result.imaginary = a.real * b.imaginary + a.imaginary * b.real;
    return result;
}

虚部と実部が一つのcomplex構造体に格納された結果、最初のコードべて随分と読みやすく且つ扱いやすいコードになったことがお分かりいただけただろうかC言語だとmallocとかしないといけないが……ごにょごにょ。

オブジェクト指向では、変数だけではなくメソッドをまとめることもできるクラスと呼ばれる概念が用意されているが、その言が構造体をサポートする場合にそれがクラスとどう違うかは言によって異なる。


関連動画



■nm10468251[ニコ動]

■sm18060505[ニコ動]


関連商品


■az479737098X
■az4753651061


関連コミュニティ


■co9320


関連項目



最終更新日: 12/10/22 23:30
タグ検索 パソコン版を見る


[0]TOP
ニコニコ動画モバイル
運営元:ドワンゴ