このページの2つのバージョン間の差分を表示します。
| 次のリビジョン | 前のリビジョン | ||
| 構造体_共用体_ビットフィールドの活用 [2011/11/29 19:43] – 作成 member | 構造体_共用体_ビットフィールドの活用 [2011/12/01 22:05] (現在) – member | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| - | ====== 構造体_共用体_ビットフィールドの活用 ====== | + | ====== 構造体 ====== |
| 構造体、共用体、ビットフィールドを使うと変数の管理が格段楽になり、ソースが見やすくなります。C言語を使う中でぜひマスターしてほしい項目だと思います。難しいと思っている人も多いようですが、フォーマットさえわかればそれをコピペでもして、使えると思います。 | 構造体、共用体、ビットフィールドを使うと変数の管理が格段楽になり、ソースが見やすくなります。C言語を使う中でぜひマスターしてほしい項目だと思います。難しいと思っている人も多いようですが、フォーマットさえわかればそれをコピペでもして、使えると思います。 | ||
| 行 9: | 行 9: | ||
| 構造体を使うと変数を階層化することができます。イメージとしては下のような具体例を考えるといいと思います。 | 構造体を使うと変数を階層化することができます。イメージとしては下のような具体例を考えるといいと思います。 | ||
| - | 米という共通の属性をもつものがあるとします。コシヒカリと、ササニシキと、ヒトメボレと、あきたこまちとでもしときましょう。この時に別々に4種の銘柄を考えるのではなく\\ | + | 米という共通の属性をもつものがあるとします。コシヒカリと、ササニシキと、ヒトメボレと、あきたこまちとでもしときましょう。この時に別々に4種の銘柄を考えるのではなく |
| 米.コシヒカリ | 米.コシヒカリ | ||
| 行 18: | 行 18: | ||
| といったように米というなかの中の何かと考えるとわかりやすいですよね。 | といったように米というなかの中の何かと考えるとわかりやすいですよね。 | ||
| - | さらに同じコシヒカリでも産地が違ったりしますよね。そういう時は\\ | + | さらに同じコシヒカリでも産地が違ったりしますよね。そういう時は |
| コシヒカリ.新潟県 | コシヒカリ.新潟県 | ||
| 行 24: | 行 24: | ||
| コシヒカリ.北海道 | コシヒカリ.北海道 | ||
| - | みたいにして区別できます。ここでコシヒカリはひとつ上の階層では米でしたから、\\ | + | みたいにして区別できます。ここでコシヒカリはひとつ上の階層では米でしたから、 |
| 米.コシヒカリ.新潟県 | 米.コシヒカリ.新潟県 | ||
| 行 32: | 行 32: | ||
| となります。つまり、入れ子構造ですね。 | となります。つまり、入れ子構造ですね。 | ||
| - | 構造体というのは今の例のように変数名を入れ子構造にして管理しようという概念です。さて、実際の文法をみていきましょう。ここでは詳しくはかかないので適当にこの表現を真似するなりしてください。 | + | 構造体というのは今の例のように変数名を入れ子構造にして管理しようという概念です。さて、実際の文法をみていきましょう。ここでは詳しくはかかないので適当にこの表現を真似するなりしてください。\\ |
| - | + | <code c> | |
| + | | ||
| + | | ||
| + | char niigataken; | ||
| + | char akitaken; | ||
| + | char hokkaidou; | ||
| + | | ||
| + | int sasanishiki; | ||
| + | float hitomebore; | ||
| + | unsigned char akitakomachi; | ||
| + | char komekome_club[20]; | ||
| + | | ||
| + | } kome_t | ||
| + | | ||
| + | kome_t | ||
| + | kome_t | ||
| + | kome_t | ||
| + | kome_data_1.sasanisiki = 15; // | ||
| + | kome_data_2.koshihikari.niigataken = 55; | ||
| + | kome_data_1.komekome_club[10] = 12; // | ||
| + | kome_data_array[35].koshihikari.hokkaidou // | ||
| + | | ||
| + | kome_data_1 = kome_data_2; | ||
| + | | ||
| + | </ | ||
| + | こんな感じで、使ってみてください。structの前についているtypedefはまあ、気になるんだったら調べてください。共用体、ビットフィールドについては次のページで説明します。 | ||