Strcpy - Pointer in funktion übergeben und zurückgeben - Verständnisfrage

Das Problem liegt darin, dass im zweiten Beispiel, wenn Sie abc = (char*)"Test1234"; zuweisen, Sie nur den Zeiger abc lokal in der Funktion test() ändern, was den Wert des Zeigers xyz in der Hauptfunktion nicht verändert. Im Gegensatz dazu kopieren Sie mit strcpy(abc, abcde); den Inhalt der Zeichenkette abcde in den Speicherbereich, auf den abc zeigt, was den Inhalt des Speichers, auf den xyz zeigt, ändert und diese Änderung nach der Rückkehr aus der Funktion bestehen bleibt.

➜ Die Zuweisung eines Zeigers (abc = (char*)"Test1234";) ändert nur die lokale Kopie des Zeigers.
strcpy() ändert den Inhalt des Speichers, auf den der Zeiger zeigt, was eine bleibende Wirkung im Hauptprogramm hat.

1 Like