Parameter = Kopie?



  • Also entweder ich bin blind oder doof (NEIN! dazu will ich keine Kommentare hören 😠 ) Also wenn ich folgendes habe:

    string meinString="Hallo!";
    string meinString2="Du";
    string container;
    int a=0;
    
    a=Verbinde(meinString,meinString2);
    
    int Verbinde(string a,string b)
    {
    container=a;
    a+=b;
    return 1;
    }
    

    Dann wird doch beim Aufruf von Verbinde eine "lokale" Variable a und b angelegt oder nich? der Globalen Var. "container" wird dann der wert von a zugewiesen und nachdem alle Anweisungen von "Verbinde" abgeschlossen sind hat "container" immernoch den Wert "Hallo!", richtig? und "meinString","meinString2" = "Hallo!" , "Du" , ODER?

    sorry das ich SO frage aber innerhalb meines Progs gibts da eine Sache mit der ich überhaupt nicht zurecht komme, eigentlich eine absolute Basic angelegenheit aber hey! nobody is perfect.. 😃

    Also könnt ihr mir sagen ob das, was ich da zu dem Codeschnipsel geschrieben habe richtig ist?

    THX && cya



  • Ja.



  • bei C++ werden per default alle Werte per Kopie übergeben (Call by Value). Das heisst, dass du inerhalb der Funktion nur mit kopien arbeitest. Wenn du den Wert ändern willst, dann musst du die Call by Reference Technik benutzen oder einen Pointer übergeben

    http://www.schornboeck.net/ckurs/referenzen.htm



  • AFAIK ist es ein unschöner Stil, wenn man globale Variablen aus Funktionen heraus verändert (wobei man globale Variablen sowieso vermeiden sollte :)). Besser, du übergibst die zu ändernde Var als Referenzparameter.


Anmelden zum Antworten