《コラム》 Cの封印された技術 ポインタ ( No.59 )
日時: 2023/02/14 21:23
名前: REDCHEEKS

昔のC言語には、ポインタというのがあったんだな。
これは非常に性能が良かったんだけど、危険なので、封印されたんだ。
だから最近のプログラム言語である、C# や Java にはポインタはない。
もっとも、表には出てこなくなったが、内部的にはあるんだな。
だから、より深く理解するためには、ポインタの理解が必要なんだ。

そもそもポインタとは何か、それは情報がどこに書き込まれているかを示す(ポイントする)情報なんだ。
そもそもポインタがないと、文字列の処理はできない。
数値の場合と異なり、文字列には、長いものや短いものがある、コンピュータにとって、数値の扱いは簡単だが、文字列の扱いは、苦手で厄介なものだ。
数値の場合は、データのサイズが決まっているので、100個目の数値を取り出そうとすれば、データのサイズ×100でその位置がわかる。
ところが、文字列の場合は、長いものや短いものがあり、長い文字列があると、その後ろはずれて行くので、単純には計算できない。
そこでポインタが必要になる。
100個目の文字列を取り出そうとすれば、ポインタのサイズ×100でポインタの位置を計算しそのポインタに書き込まれている情報をもとに、さらに文字列の位置を見に行くという2段階の処理が必要になる。
まあ、文字列に限らず、長さが色々あるデータを扱うには、ポインタが必要だ。
エッチな例で言うと、男と女では、ついているモノも違うし、データの長さは異なるので、ポインタは必要だ。
たとえば、

var red = new 男();

この例で説明すると、男クラスで定義された男情報を保管するメモリの領域の位置情報を red という変数に入れるわけだ。
だから、red という変数には、REDCHEEKS のちんちんの長さとか、そんな情報ではなく、まずREDCHEEKSに関する情報が書き込まれている位置が、数値として入っているだけである。
コンピュータは、その位置情報(ポインタ)をもとに、その位置のデータを取得し、そこからさらにちんちんの長さを得るわけだ