この文書の現在のバージョンと選択したバージョンの差分を表示します。
共用体の活用 [2011/12/06 22:01] member |
共用体の活用 [2011/12/11 00:57] (現在) member |
||
---|---|---|---|
ライン 9: | ライン 9: | ||
<code c> | <code c> | ||
typedef union{ | typedef union{ | ||
- | int block; //直進時のブロック数 | + | char block; //直進時のブロック数 |
char rot_direction; //曲がるときの回転方向 | char rot_direction; //曲がるときの回転方向 | ||
}pass_data_t; | }pass_data_t; | ||
- | <\ code> | + | </code> |
上に書いたのが共用体の使用例です。文法は構造体でstructだったところをunionにするだけです。ちなみに値の参照の仕方なども構造体とまったく同じように | 上に書いたのが共用体の使用例です。文法は構造体でstructだったところをunionにするだけです。ちなみに値の参照の仕方なども構造体とまったく同じように | ||
”.”で区切ると使えます。この使用例ではblockとrot_directionというものを共用体として管理しています。blockは直進のブロック数、rot_directionは回転方向を表す変数です。なぜこれらを共用体にしたかというと、曲がることと、直進することは同時にできないからです。じゃあ、ブロック数と回転方向を共用体なんかにしないで別々に管理すればいいじゃないかと思うかもしれないですが、この二つのデータはどちらも経路に関するデータで、まとめておきたいわけです。まとめるだけなら、構造体を使えばいいわけですが我々がつかっているマイコンというものはパソコンのように莫大なメモリを持っておらず、メモリをケチりながら使わなければならないのです。だから、構造体にしてデータを管理するときに中の変数を同時に使う可能性がないときには共用体にすると良いわけです。 | ”.”で区切ると使えます。この使用例ではblockとrot_directionというものを共用体として管理しています。blockは直進のブロック数、rot_directionは回転方向を表す変数です。なぜこれらを共用体にしたかというと、曲がることと、直進することは同時にできないからです。じゃあ、ブロック数と回転方向を共用体なんかにしないで別々に管理すればいいじゃないかと思うかもしれないですが、この二つのデータはどちらも経路に関するデータで、まとめておきたいわけです。まとめるだけなら、構造体を使えばいいわけですが我々がつかっているマイコンというものはパソコンのように莫大なメモリを持っておらず、メモリをケチりながら使わなければならないのです。だから、構造体にしてデータを管理するときに中の変数を同時に使う可能性がないときには共用体にすると良いわけです。 | ||
- | |||