パラメタを、明示的に、参照渡しする、宣言指定子。
構文:
用法:
記述:
値を、サブルーチンか関数に、参照渡し、します。つまり、そのアドレスを、サブルーチンか関数に渡します。
変数を、参照で渡すと、変数の内容を、目標のサブルーチンか関数で変更すると、メイン・ルーチンの変数の内容が変更されてしまうことを意味します。
-lang qb および
-lang fblite 方言では、
Option ByVal が有効でない限り、
Byref がデフォルトのパラメータ引き渡し規則です。
ByVal の反対です。
注意:
定数またはリテラル式も、手続きに参照渡しできますが、明らかにそれらは手続き本体から変更できません。
この場合、コンパイラは、定数またはリテラル式で初期化された一時変数を、参照渡しします。
注意:fbc バージョン1.20.0以降、STRING*N型の引数は、BYREF ZSTRING(またはBYVAL ZSTRING PTR)パラメータに渡されたときに一時変数にコピーされ(STRING*N がそれ自身の終端ヌル文字を持つことを期待しないため)、呼び出し後にコピーバックされます。
警告: 参照渡し時には、宣言されたパラメータの引数と同じ型(または派生型のような完全互換)の引数を渡すことを推奨します。
コンパイラは、異なる型を渡すことを受け入れる場合もありますが、結果は、しばしば期待通りではありません。
例:
Dim MyVar As Integer
Sub ChangeVar
(ByRef AVar As Integer)
AVar = AVar + 1
End Sub
MyVar = 1
Print "MyVar:
";
MyVar '出力 = 1
ChangeVar MyVar
Print "MyVar:
";
MyVar '出力 = 2
Sleep
End
方言差:
QBからの違い:
参照: