Einzelnen Beitrag anzeigen

Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#14

AW: Wichtige allgemeine Fragen

  Alt 28. Nov 2011, 19:13
Ich bezweifle, dass das mit einem Call By Value so funktioniert wie gedacht.
Vielleicht liege ich ja falsch, aber werden Arrays nicht immer call-by-reference übergeben.
Egal ob es sich um ein statisches oder dynamisches handelt.

Grüße
Klaus
Ohne zu wissen, wie es in Delphi wirklich gehandhabt wird, weiß ich, wie das in anderen Sprachen (Java, C) gemacht wird: Bei einem Array wird immer einer Referenz übergeben (alles andere wäre fatal: man stelle sich vor, ein Array der Größe 1000x1000 müsste bei einem Methodenaufruf jedesmal komplett auf den Stack kopiert werden...). Allerdings handelt es sich dabei trotzdem um eine Call-By-Value-Semantik und NICHT um Call-by-Reference! Grund: Wenn ich dem Parameter ein "neues" Array zuweise (und nicht den "Inhalt" des alten Arrays verändere), dann ändert sich beim Aufrufer nichts.

lg

Edit:
Mir fällt gerade ein: In C gibt es m.W.n. sogar einen "Trick", wie man den Compiler wirklich dazu bringen kann, das Array auf den Stack zu kopieren, und zwar, indem man das Array in einen struct einbettet...
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/

Geändert von patti (28. Nov 2011 um 19:20 Uhr)