Hallo,
Da hier von Pointern die Rede war, diese machen ja im Prinzip auch nichts anderes als Referenzen, nur eben Zeiger auf die Speicherstellen der Referenz.
eben, Referenzen sind eigentlich nichts anderes als Zeiger.
Zeiger gibt aber in JS nicht (wie in Java oder PHP).
Doch, nur merkt man das nicht, weil man in den Mechanismus nicht eingreifen kann.
Dein Problem ist eher der Unterschied zwischen einer deep copy und einer shallow copy. Eine deep copy erzeugt ein neues Objekt mit allen Eigenschaften des Orginals, was aufwendig ist, deshalb wird es selten gemacht.
Nun, wie gesagt: In C werden structs grundsätzlich kopiert, nicht referenziert.
typedef struct
{ int index;
long value;
} foo;
foo s1 = { 42, 52705621 };
foo s2; // für s2 wird Speicherplatz reserviert, aber nicht initialisiert
s2 = s1; // s1 wird komplett in den für s2 reservierten Speicher kopiert
s1.index = 10; // jetzt verändern wir s1
printf("%i\n", s2.index); // immer noch 42
Die Dikussion gab es auch schon öfters, Peter hat es mal erklärt.
Ich würde es nicht "erklärt" nennen; vielleicht "geschwafelt".
Ciao,
Martin
Es gibt Dinge, die sind sooo falsch, dass nicht einmal das Gegenteil stimmt.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(