Übergabe per Wert?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

JRRT0lkien

Betreff: Übergabe per Wert?

BeitragMi, März 23, 2005 13:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo!

Ich habe mal C++ gemacht und erinnere mich, dass man Funtionsparameter auf zwei verschiedene Weisen übergeben kann:

- man kann einen Pointer auf den Platz der Variable im Speicher übergeben. Wenn der Wert dann im Funktionsrumpf verändert wird, verändert sich auch die Variable, die man als Parameter übergeben hat. Dies ist, glaube ich, die Übergabe per Wert.

- oder man übergibt nur eine Kopie der Variable als Parameter. Die echte Variable wird gar nicht verändert. Das ist die Übergabe per Kopie?!

Bei BB ist Letzteres Standard. Wie kann ich Ersteres machen?

Thx im Voraus!

Gruß
JRRT0lkien

Spikespine

BeitragMi, März 23, 2005 13:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich denke du solltest die Variable, die du verändern willst, global machen. Dann kannst du sie in der Funktion verändern. Oder du speicherst die Funktion in die Variable, die du ändern willst. Dann wird die Änderung, die du in der Funktion machst mit Return übernommen.

Ich hoffe, das meintest du...

Spike

[edit]Beispiel: BlitzBasic: [AUSKLAPPEN]
x=sowieso(x)

Print X
WaitKey
End

Function sowieso (var)
Return var+2
End Function

Liefert den Wert +2
Athlon 64 3700+ | 1024 MB RAM | GeForce 7900 GT | Blitz2D, Blitz3D, BlitzPlus, BlitzMax
  • Zuletzt bearbeitet von Spikespine am Mi, März 23, 2005 14:00, insgesamt einmal bearbeitet
 

Michi

BeitragMi, März 23, 2005 13:47
Antworten mit Zitat
Benutzer-Profile anzeigen
ich hoffe ich hb dich richtig verstanden
BlitzBasic: [AUSKLAPPEN]

Global X=5

sowieso

Print X
End

Function sowieso ()
X=X+1
End Function


Da steht dann 6
Aber..Wozu soll er gut sein???
IBM-Ingeneur über die Idee des Mikroprozessors, 1968
Code: [AUSKLAPPEN]

   __
<_/__\_> <--- die Wayne-Zeichnung

Vertex

BeitragMi, März 23, 2005 13:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ganze nennt sich Call by Reference und Call by Value.

Erst ab BlitzMax mit dem Schlüsselwort Var möglich.

In BlitzClassic nur möglich mit Types, Banks, Images etc. aber mit Variablen vom Typ String, Float und Integer geht das nicht.

mfg olli
vertex.dreamfall.at | GitHub
 

JRRT0lkien

Betreff: Danke!

BeitragMi, März 23, 2005 14:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Spike: dein Vorschlag würde bei mir deshalb nicht klappen, weil ich mit return schon einen anderen Wert zurückgeben will.

Michi: danke, das ist die Lösung.

Vertex: Schade, wäre schön, wenns ginge.

Gruß
JRRT0lkien

simi

BeitragMi, März 23, 2005 14:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Du könntest natürlich das Hanlde einer Bank übergeben, aber dann wirds schon ein bisschen kompliziert (immer PeekInt aufrufen...) Wink

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group