Veröffentlicht 11. April 200322 j 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
11. April 200322 j 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.
11. April 200322 j Autor Nein, ich übergebe einen Zeiger auf das erste Element einer Zeichenkette, damit kann der Compiler doch eine Kopie anlegen.
11. April 200322 j 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*
11. April 200322 j 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
11. April 200322 j 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
14. April 200322 j Autor 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
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.