Guybrush Threepwood Geschrieben 11. April 2003 Geschrieben 11. April 2003 Hi, warum legt sich eine Funktion die einen C-String (char*) by Value übergeben bekommt, keine Kopie der Variable an, sondern ändert das Original? Gruß Guybrush Zitieren
Stevie Geschrieben 11. April 2003 Geschrieben 11. April 2003 Ein C-String ist doch ein Zeiger (char*) auf einen char-Array! Du übergibst also nicht die Zeichenkette, sondern den Zeiger auf einen char-Array. Zitieren
Guybrush Threepwood Geschrieben 11. April 2003 Autor Geschrieben 11. April 2003 Nein, ich übergebe einen Zeiger auf das erste Element einer Zeichenkette, damit kann der Compiler doch eine Kopie anlegen. Zitieren
Stevie Geschrieben 11. April 2003 Geschrieben 11. April 2003 Wenn du Arrays übergibst, wird immer nur der Zeiger auf das erste Element übergeben. Unter VC wird zumindest keine Kopie erstellt, weil du ja nur den Wert, der in dem Zeiger steht, übergibst. Und der zeigt auf das erste Element. *gleichFeierabendundzweiWochenUrlaubhat* Zitieren
nic_power Geschrieben 11. April 2003 Geschrieben 11. April 2003 Hallo, Es wird grundsätzlich keine Kopie des Arrays erstellt, sondern immer "nur" der Zeiger bzw. die Adresse des Arrays übergeben. Möchtest Du eine Kopie anlegen, so ist dies zu Fuss zu erledigen (malloc, strdup, o.ä.). Bei C liegt die Speicherverwaltung immer in Händen des Programmierers. Nic Zitieren
SgtBadAzz Geschrieben 11. April 2003 Geschrieben 11. April 2003 Original geschrieben von Guybrush Threepwood Hi, warum legt sich eine Funktion die einen C-String (char*) by Value übergeben bekommt, keine Kopie der Variable an, sondern ändert das Original? Gruß Guybrush Du bekommst eine Kopie von Value die aber auf den gleichen String zeigt. Wenn du dann Value dereferenzierst arbeitest du mit dem Original-String. Frank Zitieren
Guybrush Threepwood Geschrieben 14. April 2003 Autor Geschrieben 14. April 2003 Original geschrieben von SgtBadAzz Du bekommst eine Kopie von Value die aber auf den gleichen String zeigt. Wenn du dann Value dereferenzierst arbeitest du mit dem Original-String. Frank Achso, ist ja eigentlich auch klar:rolleyes: Der Zeiger ist schon ne Kopie, aber auf was er zeigt bleibt natürlich gleich. Danke euch allen. Guybrush Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.