スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

構造体のススメ

こんばんは

 本日は構造体を積極的に使おうということで,「構造体のススメ」と題しております.PCを使ってる人なら,.txtとか.xlsxとか.jpg...etc を一つの場所に全部保存することはないでしょう.フォルダ分けして,目的のファイルをすぐいつけられるように整理していると思います.C言語の変数にも同じことが言えます.グローバル変数やローカル変数に変数が多くなるとごちゃごちゃしてしまいます.そこで,変数をフォルダのようにまとめてしまおうというのが構造体です.まあ,詳しいことはグーグル先生が私の説明よりわかりやすく教えてくれるはずなので調べてみてください.
 構造体の利用例の一例といっては大げさですが,自分が構造体を用いてどのようにターンパラメータを保存してるかを紹介したいと思います.

typedef

 これが私がターンパラメータの保存に使っている構造体の型です.typedefして新たな型"turn_t"を定義しています.typedefした場合は,型名を"_t"とするのが通例らしいです.中身を上から説明しますと,

①ターンする角度
②最小曲率半径
③ターン速度
④前距離
⑤後ろ距離
⑥ターン方向
⑦ターン後斜め走行か?
⑧このターンパラメータは有効か?

 です.そして,このtypedefした型を用いて,

para

 のようにconstな変数に代入しています.構造体は,宣言と同時に代入する場合は,配列と同じように中括弧で囲まれた範囲内でまとめて代入することができます.これをうまく利用すると,エディタ上で縦にターンの種類,横にターンの各パラメータを並べられるため,パラメータの代入が表のようになるため,コードがすっきりします.

以下,ポインタまみれ #用法用量をお守りください

私のコードでは,各ターンの構造体のポインタを,ターン速ごとにポインタ配列でまとめています.↓

para_p

 さらに,"速度ごとに構造体のポインタをまとめたポインタ配列"のポインタ(つまり,ポインタのポインタ)を,ポインタのポインタ配列でまとめています.↓

para_pp

 こうすることにより,ターンパラメータへのアクセスをPara[5][10]のように,配列的にアクセスできるようになるため,ターン速度を速度ごとにenum,ターンの種類ごとにenumしておけば,ターンパラメータへのアクセスが便利です.なら,普通に構造体配列を宣言すればいいんじゃないの?と思うかもしれませんが,そのとおりです. "turn_t[10][16]"のようにすればよいのです.しかし,constにこだわったため,こうなりました.(constでも構造体配列が使えるなら誰か教えて...)

 今日の記事を書いているとき,型の理解て重要だな.って思ったので次は変数の型について書くかもしれません.ではまた次回!

スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

tennisyi

Author:tennisyi
現在、東京理科大学miceに所属しており、マウスを制作しています。
目指せハーフマウス脱初心者!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。