![見出し画像](https://assets.st-note.com/production/uploads/images/162364688/rectangle_large_type_2_ac7715e2a8fcde3527d590c79a2d2d65.png?width=1200)
プログラミングのポインタとは?
ここ近年は主にスマホアプリ開発をしているので、SwiftやKotlinといったプログラミング言語を良く使います。これらの言語ではポインタの概念はバックグラウンドで管理されてるのでしょう、そのせいもあって誰でもバグの少ないコードを書きやすいです。
しかしかつてはWindows向けにC++を使うことがありました。また、現在のスマホアプリ開発でもC++を一部組み込むこともあります。そこでとても理解に苦労したのが「ポインタ」てす。
ポインタが何かと言われ、自己流に答えるならば、「あるデータの住所(メモリアドレス)を格納したデータ」です。例えば、東京タワーそのものではなく、間接的な「東京都港区芝公園四丁目2番8号」というのがポインタです。
このポインタを使うことで、メモリに対して細かいデータ操作ができる訳なんです。例えば、ポインタを1つずらした、一つ隣の番地(3番)の物件を調べよう、とか。一方、東京タワーそのものだと隣が何なのかわかりません。
プログラミングする上でメモリアドレスはアロケーション(割り当て)が必要です。ここのアドレスは自分のソフトが使うからね!という領有権を他のソフトと喧嘩しないように確保する必要があります。アロケーションをするときはポインタと、その位置から確保するデータ長を指定します。
ポインタには型があり、byte型のポインタの指し先は1バイト、int型のポインタの指し先は4バイト(32bit)など、システム(アーキテクチャ)によって違いはあるのですか、データ長が決まってます。ですのでデータ長は暗黙として省略される場合があります。ただし、配列といって、例えばbyte型を80個分確保したい!みたいなときは、80という長さ情報を指定します。また、あとで読み出そうとするなら覚えておく必要があります。テキスト文字や画像データなんかに配列が使われます。
そして最後に、アロケーションしたメモリは解放してあげなくてはなりません。いつまでも自分のソフトが専有してしまっては、他のソフトが困ってしまいますからね。
そう考えると、メモリって大切ですよね。料理で言うと、まな板でしょうか。広い方が調理がしやすいです。でも置き場所には限界があり、いつまでも放置はできないので冷蔵庫にしまう。それがハードディスクと言えるでしょう。冷蔵庫なので容量はまな板よりありますが、出し入れするまでに時間がかかります。
(包丁は…CPU?てすかね笑)
電車内で思ったことを徒然なるままに書いたのでお読みになっで意味不明かもしれません。ごめんなさい。。
まったく私は変人です笑
さて、駅につきそうですのでこの辺で!