Buchempfehlung
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
"Der" Petzold, das über 1000 Seiten starke Standardwerk zum Win32-API - besonders nützlich u. a. bei der GUI-Programmierung in FreeBASIC! [Mehr Infos...]


Referenz - BYREF

Referenz-Navigation

 

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: BefehlsreferenzeintragBYVAL, BefehlsreferenzeintragDECLARE, BefehlsreferenzeintragOPTION, BefehlsreferenzeintragParameterübergabe

Unterschiede zu QB:

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
  • Der Referenzeintrag wurde am 29.06.2007 von Redakteurnemored angelegt.
  • Die aktuellste Version wurde am 16.09.2007 von Redakteurnemored gespeichert.
  Versionen Versionen