何かのアドレスを取得@するには、演算子またはAddr関数を使用します。あなたはすでにそれを正しく使用していることを実証しました。のアドレスを取得し、iValueに保存しましたiptrValue。
アドレスを表示Formatするには、関数を使用してポインター値を文字列に変換します。%p次のフォーマット文字列を使用します。
Edit1.Text := Format('%p -> %p -> %d', [@iptrValue, iptrValue, iptrValue^]);
これにより、変数のアドレス、iptrValueその変数に格納されているアドレス、そのアドレスに格納されている値が表示されます。
変数宣言はiptrValue、メモリ内にいくつかのバイトを予約し、それらに名前を関連付けます。最初のバイトのアドレスを次のように仮定します$00002468。
iptrValue
+----------+
$2468: | |
+----------+
iValue宣言は別のメモリを予約しており、おそらく前の宣言のメモリに隣接しています。iptrValueは 4 バイト幅なので、 のアドレスは次のiValueようになります$0000246C。
iValue
+----------+
$246c: | |
+----------+
これらの変数が保持する値についてはまだ説明していないため、私が描いたボックスは今のところ空です。変数のアドレスについてのみ説明しました。実行コードに移りましょう。@iValue結果を に書き込んで保存するとiptrValue、次のようになります。
iptrValue
+----------+ +----------+
$2468: | $246c |--->| |
+----------+ +----------+
iValue
+----------+
$246c: | |
+----------+
Next, you assign 32342 to `iValue`, so your memory looks like this:
iptrValue
+----------+ +----------+
$2468: | $246c |--->| 32342 |
+----------+ +----------+
iValue
+----------+
$246c: | 32342 |
+----------+
最後に、Format上記の関数の結果を表示すると、次の値が表示されます。
00002468 -> 0000246C -> 32342