Array "kopieren" - ich glaub ich steh im Wald
- GM 8
Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen
-
-
Irgendwie ist das ein Bug oder so O_o
Denn das kommt auch wenn man nur schreib aarray1 = 5;
show_message(array1[1]);
Eigentlich müsste da ne meldung kommen dass die Variable nur unbekannt ist!
Denn das wär logisch.
Man kann arrays nicht einfach so koppieren.
Du musst das mit einem Loop machen:
var a, b;
a = 0; b = 0;
repeat(100) // Index des zwiten Arguments
{
repeat(100) // index des ersten Arguments
{
array2[a,b] = array1[a,b];
a += 1;
}
b += 1;
} -
Dank dir!
Trotzdem merkwürdig, das bedeutet ja dass der GM wohl keine richtige Speicherverwaltung hat. Denn wenn ich sage, dass A = B dann muss A[0] auch das Gleiche wie B[0] sein.
Na ja, dann eben mit loops -
Dazu muss man die Hintergründe von GM oder eigentlich jeder Prog-Sprache verstehen (glaub ich zumindest):
Wenn man irgendwo eine variable eingibt, nimmt der Interspreter immer den Wert dieser variable. Also die Zahl oder String die die Variable beinhaltet.
Das heist du überträgst per a = b nur den Wert von B und garnichts anderes.
Also ist es völlig egal ob b ein Array oder was auch immer ist. -
Wenn du schreibst "array2 = array1", dann wird in dem Fall nur das [0,0]-Element von array1 zugewiesen, da man Arrays mit dem GM ja nicht einfach kopieren kann (es wird nur das "Null-Element" übergeben). array2 ist nun einfach eine Variable bzw. ein Array mit nur einem Feld und kann mit array2, array2[0] oder auch array2[0,0] aufgerufen werden. -
Der GM hat keine Pointer. Keine Angabe von einem Array-Index ist, wie schon gesagt, eine Abkürzung für [0,0].
-
Und selbst wenn der GM Pointer hätte, würde dieser auf den selben Speicherbereich zeigen, ergo hätte Array1 und Array2 immer den selben Inhalt, was nicht sehr zielführend wäre. In anderen Programmiersprachen kannst du auch nicht einfach Arrays via = übertragen (eventuell, wenn der Operator überladen ist? Ich hab schon viel zu lange nicht mehr C++ programmiert). Ich löse das in ANSI C mit einem memcpy befehl....
-
Benutzer online 1
1 Besucher