Referenz - BYREF
Syntax A: DECLARE { SUB | FUNCTION } Name (BYREF parameter AS TYP, ...)
Syntax B: { SUB | FUNCTION } Name (BYREF parameter AS TYP, ...)
Typ: Klausel
Kategorie: Programmorganisation
Übergibt die Adresse des nachfolgenden Parameters an eine Prozedur.
ByRef steht für 'By Reference'. Variablen, die auf diese Weise übergeben wurden, sind dadurch direkt referenziert. Das bedeutet, es wird nicht ein Wert übergeben, sondern lediglich ein Zeiger auf die Position der Variablen im Speicher. Das hat zur Folge, dass im Gegensatz zu ByVal alle Änderungen dieser Variablen in der bearbeitenden Funktion oder Sub direkt auf die ursprüngliche Variable einwirken, da ja von hier aus direkt darauf verwiesen wird.
Bis freeBASIC v0.16 wurden Variablen BYREF übergeben, wenn keine Klausel explizit verwendet wurde und OPTION BYVAL nicht aktiv war. In Versionen von freeBASIC ab v0.17 ist dies nur noch dann der Fall, wenn mit der Kommandozeilenoption
-lang deprecated
kompiliert wird. Bei Einsatz der Kommandozeilenoption
-lang fb
wird standardmäßig BYVAL übergeben.
Beispiel:
DECLARE SUB MySub (BYREF a AS INTEGER, BYVAL b AS INTEGER)
DIM AS INTEGER a, b
a = 10
b = 10
PRINT "a = "; a
PRINT "b = "; b
PRINT
MySub a, b
PRINT "Wieder auf Modulebene:"
PRINT "a = "; a
PRINT "b = "; b
SUB MySub (BYREF a AS INTEGER, BYVAL b AS INTEGER)
a += 10
b += 10
PRINT "in MySub:"
PRINT "a = "; a
PRINT "b = "; b
PRINT
END SUB
Ausgabe:
a = 10
b = 10
in MySub:
a = 20
b = 20
Wieder auf Modulebene:
a = 20
b = 10
Siehe auch:
BYVAL,
DECLARE,
OPTION,
Parameterübergabe
Unterschiede zu QB:
- Neu in FreeBASIC
- bis FreeBASIC v0.16: keine Unterschiede bei der Standard-Übergabemethode für Parameterlisten.
- ab FreeBASIC v0.17: Wenn das Programm mit der Kommandozeilenoption -lang deprecated übersetzt wird, so treten keine Unterschiede auf. Ansonsten werden Variablen standardmäßig BYVAL übergeben.
Unterschiede zu früheren Versionen von FreeBASIC:
Seit FreeBASIC v0.17 werden Variablen nur noch dann standardmäßig BYREF übergeben, wenn mit der Kommandozeilenoption -lang deprecated kompiliert wurde. Ansonsten muss explizit die BYREF-Klausel verwendet werden.
| Zusätzliche Informationen und Funktionen | ||||
|---|---|---|---|---|
|
||||




Versionen