char* Übergabe ...
-
Hallo,
ich habe folgendes simples Problem aus dem ich nicht schlau werde. Ich übergebe an eine Funktion einen char-Pointer, dessen Inhalt soll dort verändert werden und natürlich nach der Rückkehr erhalten bleiben:
char* xyz = "abc";
blubb(xyz);void blubb(char* x)
{
x = "123";
}Nach dem Aufruf von blubb sollte xyz ja den Wer "123" haben. Hat es aber nicht. Sondern weiterhin "abc".
Wo ist mein Denkfehler?
Habt Dank
-
Dieser Thread wurde von Moderator/in estartu aus dem Forum MFC (Visual C++) in das Forum ANSI C verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
du veränderst den übergabeparameter, nicht das original. probier dies:
char* xyz = "abc"; blubb(&xyz); void blubb(char** x) { *x = "123"; }
-
x ist eine lokale Kopie des übergebenen Wertes - die Änderung wirkt sich also nicht auf deine Variable im Hauptprogramm aus. Um eine Rückwirkung zu bekommen, mußt du Referenzen oder Pointer übergeben:
void func(char*& x) { x="123"; } int main() { char* xyz="abc"; cout<<xyz<<endl; func(xyz); cout<<xyz<<endl; }
-
CStoll (off) schrieb:
x ist eine lokale Kopie des übergebenen Wertes - die Änderung wirkt sich also nicht auf deine Variable im Hauptprogramm aus. Um eine Rückwirkung zu bekommen, mußt du Referenzen oder Pointer übergeben:
void func(char*& x) { x="123"; } int main() { char* xyz="abc"; cout<<xyz<<endl; func(xyz); cout<<xyz<<endl; }
wir sind hier im C forum
-
anmerkung schrieb:
wir sind hier im C forum
Als ich das geschrieben habe, stand das Thema noch im MFC-Forum (sorry, wenn ich etwas langsam reagiert habe).