Buchempfehlung
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Umfassend, aber leicht verständlich führt dieses Buch in die Programmierung von ATMEL AVR Mikrocontrollern ein. [Mehr Infos...]


Referenz - BYVAL (Klausel)

Referenz-Navigation

 

Syntax A: DECLARE { SUB | FUNCTION } Name (BYVAL parameter AS TYP, ...)
Syntax B: { SUB | FUNCTION } Name (BYVAL parameter AS TYP, ...)
Typ: Klausel
Kategorie: Programmorganisation

Legt in einer Parameterliste fest, dass ein Parameter BYVAL übergeben werden soll.

Beide Syntaxes symbolisieren die Parameterliste einer Prozedur; siehe dazu DECLARE, SUB, FUNCTION, Prozeduren, Parameterübergabe.

ByVal steht für 'By Value', was soviel bedeutet wie 'als Wert'. Dies erklärt auch gleich seine Funktion: Eine mit ByVal übergebene Variable wird als Wert übergeben, d.h. es wird eine Kopie erstellt und nur diese an den Prozedurkopf einer Funktion oder Sub weitergegeben. Wird in Folge in der Funktion der Wert geändert, hat das keine rückwirkenden Auswirkungen auf die ursprünglich übergebene Variable. Der Zusammenhang wird vielleicht durch die Erläuterungen zum Schlüsselwort BefehlsreferenzeintragByRef deutlicher.

Bitte beachten Sie:
Bis freeBASIC v0.16 wurden Variablen, wenn nichts anderes angegeben wurde, BYREF übergeben. In entsprechend höheren Versionen ist dies nur dann noch der Fall, wenn mit der Kommandozeilenoption

-lang deprecated

kompiliert wird; ansonsten werden bei Versionen von FreeBASIC ab v0.17 Variablen standardmäßig BYVAL übergeben.

Beispiel:

DECLARE SUB MySub (BYVAL a AS INTEGER, _
   BYREF b AS INTEGER)

DIM AS INTEGER a = 1, b = 1

PRINT "Vor Subaufruf:"
PRINT "a = "; a
PRINT "b = "; b
PRINT

MySub a, b

PRINT "Nach Subaufruf:"
PRINT "a = "; a
PRINT "b = "; b

SUB MySub (BYVAL a AS INTEGER, _
   BYREF b AS INTEGER)
   a += 1
   b += 1

   PRINT "In der Sub:"
   PRINT "a = "; a
   PRINT "b = "; b
END SUB

Ausgabe:

Vor Subaufruf:
a = 1
b = 1

In der Sub:
a = 2
b = 2

Nach Subaufruf:
a = 1
b = 2

Unterschiede:
zu QB:
- Variablen werden standardmäßig BYVAL übergeben, nicht mehr BefehlsreferenzeintragBYREF, wie dies in QB und VB der Fall war.
zu älteren freeBASIC-Versionen
- Seit freeBASIC v0.17 muss mit der Kommandozeilenoption -lang deprecated kompiliert werden, damit Variablen standardmäßig BYREF übergeben werden, wie das in den vorherigen Versionen der Fall war. Ansonsten ist der Standard BYVAL.

Siehe auch: BefehlsreferenzeintragBYREF


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