Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Variable as a reference or value to a function
#2
(07-17-2022, 07:15 PM)Kernelpanic Wrote: Today I looked at passing variables/arguments to functions - by reference and by value. QBasic Reference P. 2.31.

Apparently, passing by value doesn't work for functions.  Huh But with a procedure (Sub) it worked.

Value at Sub: The value is not changed
Code: (Select All)
'Beispiel fuer Uebergabe an Funktionen als Referenz und als Wert
'Funktioniert offenbar nicht mit Funktionen (?)
'17. Juli 2022

Option _Explicit

Declare Function AlsReferenz(eingabe as Integer) as Integer
Declare Sub AlsWert(eingabe as Integer) as Integer

Dim zahlref, zahlwert As Integer

Cls
Print
Print "Referenzbeispiel - Eingabe wird veraendert"
Input "Eingabe: ", zahlref

Print Using "Eingabe vor Funktionsaufruf: ###"; zahlref
Print Using "Eingabe nach Funktionsaufruf (Eingabe x 3): ###"; AlsReferenz(zahlref)

Print
Print "Wertbeispiel - Eingabe wird nicht veraendert"
Input "Eingabe: ", zahlwert

Print Using "Eingabe vor Funktionsaufruf: ###"; zahlwert

'Aufruf mit Wert in Klammern um sie zu einem Ausdruck zu machen
'QBasic Referenz S. 2.31
Call AlsWert((zahlwert))
Print Using "Eingabe nach Funktionsaufruf (Als Ausdruck): ###"; zahlwert

Print
Print "Uebergabe nicht als Ausdruck - keine Klammern (Eingabe + 3)."

'Jetzt nicht als Ausdruck: Ohne extra Klammern
'um die Variable wird die Eingabe veraendert, da
'sie jetzt wieder als Referenz (Standard) uebergeben wird.
Call AlsWert(zahlwert)
Print Using "Eingabe nach Funktionsaufruf: ###"; zahlwert

Function AlsReferenz (eingabe As Integer)

  AlsReferenz = eingabe * 3
End Function

Sub AlsWert (eingabe As Integer)

  'Hat nur Auswirkung, wenn Argument nicht als Ausdruck
  'uebergeben wird
  eingabe = eingabe + 3
End Sub

And now with a function: Passing by value doesn't work.
Code: (Select All)
'Beispiel fuer Uebergabe an Funktionen als Referenz und als Wert
'17. Juli 2022

Option _Explicit

Declare Function AlsReferenz(eingabe as Integer) as Integer
Declare Function AlsWert(eingabe as Integer) as Integer

Dim zahlref, zahlwert As Integer

Cls
Print
Print "Referenzbeispiel - Eingabe wird veraendert"
Input "Eingabe: ", zahlref

Print Using "Eingabe vor Funktionsaufruf: ###"; zahlref
Print Using "Eingabe nach Funktionsaufruf: ###"; AlsReferenz(zahlref)

Print
Print "Wertbeispiel - Eingabe wird nicht veraendert"
Input "Eingabe: ", zahlwert

Print Using "Eingabe vor Funktionsaufruf: ###"; zahlwert
Print Using "Eingabe nach Funktionsaufruf: ###"; AlsWert((zahlwert))

End 'Hauptprogramm

Function AlsReferenz (eingabe As Integer)

  AlsReferenz = eingabe * 3
End Function

Function AlsWert (eingabe As Integer)

  AlsWert = eingabe + 3
End Function

You are not changing the values in the function.
  724  855  599  923  575  468  400  206  147  564  878  823  652  556 bxor cross forever
Reply


Messages In This Thread
RE: Variable as a reference or value to a function - by bplus - 07-17-2022, 07:33 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
  Function Pointers? BlameTroi 5 265 02-20-2026, 05:55 PM
Last Post: BlameTroi
  Variable length type declarations dano 5 706 08-06-2025, 09:53 PM
Last Post: dano
  Determining if variable or static string is passed to a Sub dano 9 1,249 06-20-2025, 06:31 PM
Last Post: CookieOscar
  Most efficient way to build a big variable length string? mdijkens 9 1,920 01-17-2025, 11:36 PM
Last Post: ahenry3068
  Huge array of variable length strings mdijkens 9 1,869 10-17-2024, 02:01 PM
Last Post: mdijkens

Forum Jump:


Users browsing this thread: 1 Guest(s)