russkij Geschrieben 30. August 2005 Geschrieben 30. August 2005 Hallo, wieder ein Problem so verstehe ich die Übergabe von Argumenten bei Funktionen: void Funktion(int X) //wird nichts zurück gegeben, braucht aber X int Funktion() //wird ein Integer zurück gegeben nun, habe im Buch 2 Funktionen, die nichts mit einander zutun haben, mir ist nur aufgefallen dass beide Void sind, und eine davon aber einen Wert zurück gibt. Habe beide Funktionen so weit wie möglich abgespeckt, damits übersichtlich wird, und zum Schluss in eine zusammen gefasst. void myFunktion(char szX[], int nX) { szX[4] = '1'; //zum "Text" wird "1" angehängt, szX[4]="Text1" nX++; //hier ist nX=2 } void main() { char szY[8]="Text"; int nY = 1; myFunktion(szY, nY); //hier ist szY="Text1", aber nY=1. } [/PHP] Nun, warum bekommt die scY Wert übergeben, und nY aber nicht? Ich habe bestimmt irgend wo einen Denkfehler, nur finde ich diesen nicht :confused: Danke allen für die Mühe Zitieren
Klotzkopp Geschrieben 31. August 2005 Geschrieben 31. August 2005 Kein Denkfehler, sondern eine Spracheigenschaft von C und C++, die du nicht kennst Normalerweise werden von den Funktionsargumenten Kopien gemacht (call by value). Änderungen in der aufgerufenen Funktion betreffen nur diese Kopie, und wirken sich nicht auf die Variable aus, die im Aufruf steht. Arrays sind da allerdings eine Ausnahme. Von einem Array wird immer nur ein Verweis übergeben (call by reference). Änderungen am Array in der aufgerufenen Funktion wirken sich damit auf das Array aus, das für den Aufruf benutzt wurde. Zitieren
russkij Geschrieben 31. August 2005 Autor Geschrieben 31. August 2005 Aaaaa, wieder was gelernt Ich hab wegen dieser Spracheigenschaft kaum schlalfen können, hat mir keine ruhe gelassen. Der Typ, der das Buch geschriben hat, könnte es auch vermerken, und nicht einfach so stehen lasen Danke Dir! Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.