ガッ
ぬるぽ、その語源はNullPointerなのだが、Nullは何もないという意味でポインターはアドレスの番地を示すデータのこと。まだ住所書いてないはがきという表現が近い気がする。
このポインターというやつは往々にしてC言語を勉強する人間を混乱させる奴なのだが、自分が一番わからなかったのが
・どういう時に使うのかが書いてない
という事だった。
モジュール間の値の受け渡しの時に(とあるマイコンだと)上手く受け渡せなかったり、そもそも効率が落ちるため使うのだが、そもそもマイコンの事を知らないとあんまり意味がない気がする。PCだとある程度性能でゴリ押し出来るから…。
ポインターの話をする前にマイコンのデータ構造の話をする前にマイコンそのものの話をしよう。
・PCとマイコン(組み込み系)の違い
○PC(パーソナルコンピュータ)
汎用性が高い
ある程度性能に余裕を持って作られている
お高い
デスクトップとかラップトップとか
OSが大体入っている
○マイコン(マイクロコントローラ)
専門性が高い
処理が早い
安い
スペックがシビア
組み込み用OSが入ってる奴もいる
家電に入ってたりする
炊飯器にWindowsを入れるような贅沢なものは見たことが無いと思う。
じゃあどうやってコントロールしてるのかって言うと、マイコンという心臓部が入っててこれであらゆるパラメータをコントロールしているのである。ただこのマイコンという奴は一度に処理できるデータもデータの容量なども小さいので、効率的に使用しないとあっという間にリソースを使い果たしてしまうのだ。
こういうとき、直接ハードウェアに近いところをいじれればいじれるほど効率化が可能なのだが、そんな時に出てくるのがC言語なのである。
プログラミング言語は他にPythonとかScalaとかPerlとかあるのだが、ポインターみたいなアドレス関連を意識しなくていいように「なんかいい感じの処理」を内部で行っていて、そのなんかいい感じの処理にはリソースを食うので結果的にCが一番効率がいいということになる。その代わりバグも起こりやすいけど。
構造の話するのがダルいので今回はここまで。