目次→
演算子→
ポインタ演算子→
Operator @ (Address of)←オリジナル・サイト
文字列直定数、数値変数、オブジェクト、手続きの、アドレスを返します。
演算子 VarPtr (変数ポインタ) と同じものです。
構文:
用法:
result = @ rhs
パラメタ:
rhs
アドレスを取得する、文字列直定数、変数、オブジェクト、手続き。
T
戻り値:
右側 (rhs) 演算対象の、アドレスを返します。
記述:
演算子 @ (のアドレス) は、演算対象のメモリ・アドレスを返します。
演算対象が、
String 型のときは、内部の
文字列記述子のアドレスを返します。
このため、
文字列データのアドレスを取得するときは、演算子 StrPtr (文字列ポインタ) を使ってください。
配列を演算対象にすることができませんが、配列の要素は対象にできます。
例えば、"@myarray(0)" は、"myarray(0)" のアドレスを返します。
この演算子は、適切な構文を使って、メンバー
演算子 として、ユーザー定義型のために、多重定義できます。
例:
'このプログラムは、@ 演算子 を使う例です。
Dim a As Integer
Dim b As Integer
Dim addr As Integer Ptr
a = 5 '値 5 と 10 を、それぞれ a と b に置きます
b = 10
'変数の値を表示します。そして、メモリで値が格納されている場所を表示します。
Print "a の値は ";a;" です。しかし a へのポインタは ";@a;" です。"
Print "b の値は ";b;" です。しかし b へのポインタは ";@b;" です。"
'今、@を使って、上の整数のポインタを取得します。
'そしてポインタの「*」で、値を表示できることに注意してください。
'"@" が、普通の変数の ptr をチェックするのと同じです。
addr = @a
Print "今、ポインタ addr は a のメモリ・アドレスを指します。そのポインタが示す値は: ";*addr
addr = @b
Print "今、ポインタ addr は b のメモリ・アドレスを指します。そのポインタが示す値は: ";*addr
Sleep
'このプログラムは、サブルーチンへのポインタを作成するための、
'@ シンボルの使い方を、示します。
Declare Sub mySubroutine
()
Dim say_Hello As Sub
()
say_Hello = @mySubroutine 'say_Hello に、mySubroutine を指すように、伝えます。
'ここで、sub() データ型は、ポインタとして振舞います。
say_Hello() 'いま、mySubroutine のように、say_Hello を走らせることができます。
Sub mySubroutine
Print "hi"
End Sub
Sleep
例2: ポインタ演算子で取得する値
方言差:
QBからの違い:
参照: