Der Martin: testergebniss

Beitrag lesen

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:(