学習ノート 8.1 ポインタの概念 左にメニュー・フレームが表示されていない場合は、ここをクリックして下さい
ポインターは、アドレスデータを格納する特別な変数です。
このアドレスは、コンピューターのメモリの特定の場所に存在する値を直接指します。変数単位はアドレスで見つけることができます。
つまり、ポインターが指すアドレスは変数の記録場所を参照するため、アドレスは「ポインター」として視覚化されます。ポインターが指すアドレスは有効でなければなりません。
32ビットプログラムでは、アドレスはすべて 32ビット長なので、すべての型のポインターの値は 32ビット整数です。アドレスはポインターを定義することで、その値は &H00000000 〜 &HFFFFFFFF の範囲で変更できます。
FreeBASIC では Integerデータ型は OS のビット数で変わるため、32ビットシステムでは Long(32ビット = 4バイト)であり、64ビットでは LongInt(64ビット = 8バイト)になります。これは、Integerを使って、 32ビットまたは64ビットシステムで、長さを計算せずに、ポインターを単独で簡単に切り替えられることを示します。
値が 100 の変数 a が、アドレス &H00000001 のメモリに格納されているとします。一方、値が 200 の変数 b が、アドレス &H00000002 のメモリに格納されています。
ポインタ p の値が &H00000001 だと、この変数 a を指します。
ポインタ p | &H00000001 | → | 100 | aのアドレスは: | &H00000001 |
ポインタ p+1 | &H00000002 | → | 200 | bのアドレスは: | &H00000002 |
ポインター p の値が &H00000001 の場合、p は変数 a を指します。
p の値が &H00000002 の場合、p+1(&H00000001+1 = &H00000002)と見なすことができ、p は変数 b を指します。
ポインターが有効な「アドレスを指す値」を持つ変数であることを理解すると、ポインターの基本的な考え方を理解できます。