Hallo!
Ich verstehe zwar wie man in der Praxis mit dem Thema umgeht, hätte aber eine Grundlagenfrage.
Ich bin vor kurzem zufällig wieder über das "pass by value" Konzept von Java gestolpert und dabei kam mir folgender Gedanke:
Das gegenteilige "pass by reference" Konzept stelle ich mir wie Referenzen in C++ vor. Diese sind (zumindest konzeptionell) wie ein Alias für eine bestimmte Speicheradresse gedacht. Also verweisen beide Variablen auf den selben Speicherbereich. Pointer hingegen beinhalten die Ziel-Adresse selbst in einem eigenem Speicherbereich.
Vermutung: Die allgemeine Zuordnung von alphabetischen Variablennamen (wie wir sie verwenden) zu den tatsächlichen Speicheradressen muss doch in Form irgendeiner Tabelle realisiert sein. Wäre es also nicht performanter, das Pointerkonzept auch direkt dort zu realisieren? Sprich, bei Zuweisung eines Pointers zu einem bestehenden Objekt, einfach einen weiteren Eintrag in der Zuordnungstabelle anlegen.
Beispiel:
a = new Object();
d = a
sähe dann im Speicher so aus:
Variable -> Speicheradresse
a -> 0001
b -> 0002
c -> 0003
d -> 0001
So würde man sich doch das Abspeichern der Speicheradresse in einer eigenen Speicherzelle sparen. Wäre also immer ein Schritt weniger.
Nachdem aber auch in C++ Referenzen (die gedanklich diesem Konzept entsprechen) technisch als Pointer realisiert sind, wird es hier einen guten Grund geben, warum meine Idee keinen Sinn macht.
Kann mir diesen jemand erklären?
Danke schonmal im Voraus!
Ich verstehe zwar wie man in der Praxis mit dem Thema umgeht, hätte aber eine Grundlagenfrage.
Ich bin vor kurzem zufällig wieder über das "pass by value" Konzept von Java gestolpert und dabei kam mir folgender Gedanke:
Das gegenteilige "pass by reference" Konzept stelle ich mir wie Referenzen in C++ vor. Diese sind (zumindest konzeptionell) wie ein Alias für eine bestimmte Speicheradresse gedacht. Also verweisen beide Variablen auf den selben Speicherbereich. Pointer hingegen beinhalten die Ziel-Adresse selbst in einem eigenem Speicherbereich.
Vermutung: Die allgemeine Zuordnung von alphabetischen Variablennamen (wie wir sie verwenden) zu den tatsächlichen Speicheradressen muss doch in Form irgendeiner Tabelle realisiert sein. Wäre es also nicht performanter, das Pointerkonzept auch direkt dort zu realisieren? Sprich, bei Zuweisung eines Pointers zu einem bestehenden Objekt, einfach einen weiteren Eintrag in der Zuordnungstabelle anlegen.
Beispiel:
a = new Object();
d = a
sähe dann im Speicher so aus:
Variable -> Speicheradresse
a -> 0001
b -> 0002
c -> 0003
d -> 0001
So würde man sich doch das Abspeichern der Speicheradresse in einer eigenen Speicherzelle sparen. Wäre also immer ein Schritt weniger.
Nachdem aber auch in C++ Referenzen (die gedanklich diesem Konzept entsprechen) technisch als Pointer realisiert sind, wird es hier einen guten Grund geben, warum meine Idee keinen Sinn macht.
Kann mir diesen jemand erklären?
Danke schonmal im Voraus!