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
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.
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.
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*
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
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
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
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden