C Kann ich Variablen in einer Funktion nur mit return zurückgeben ?

Cinematic

Lt. Commander
Registriert
Dez. 2010
Beiträge
1.223
Wenn ich eine Funktion habe, in der z.B. drei lokale Variablen m, n und ggt bestimmt werden.

Ich diese Variablen aber nun in einer nachfolgenden Funktion verwenden möchte, wie mache ich das ? Die Variablen sind ja schließlich lokal in dieser Funktion "eingesperrt".

Müsste ich also drei return's verwenden (falls das überhaupt geht?) ?
 
Drei returns geht natürlich nicht. Am besten löst du das wohl über ein struct, welches du der Funktion übergibst.
 
Hmm leider bin ich noch ein blutiger Anfänger und kann mit "struct" nichts anfangen.
 
Hey,

guck mal hier, das sollte genau das Richtige für Dich sein ;)
So lässt sich dein Vorhaben realisieren.
 
Ah sehr gut, danke !

Wenn ich das richtig verstanden habe, wird ohne das * eine Variable also nur lokal in der Funktion behandelt, aber mit dem * ist sie auch außerhalb der Funktion verfügbar ?
 
Ja, genau aber ich würde mich diesbezüglich (auch da Du ja noch Anfänger bist ;) ) auf jeden Fall mit Pointern beschäftigen, das ist in C sowieso unausweichlich.
Ist am Anfang zwar etwas kompliziert aber wenn Du die Systematik dahinter verstanden hast, dann wird dir auch klar wieso dass so funktioniert, wie es eben funktioniert ;)
 
wenn du die funktion mit int *a als eingangsparameter definierst und sie dann mittels meinetwegen &x aufrufst, dann wird der funktion die referenz zum speicher von x übergeben. d.h. du übergibst nicht einfach nur den wert als kopie, sondern die adresse zum original, wenn man es so ausdrücken will. anschließend kannst du in der funktion, da du ja die adresse zum original und nicht nur eine kopie hast, mit dem original weiterarbeiten. "a" ist also kein eigener bereich im speicher, der den selben inhalt hat wie x, sondern a zeigt auf den gleichen speicher wie x. so kannst du das natürlich mit mehreren werten machen. die funktion gibt quasi nicht nur rückgabewerte zurück, sondern verändert sie direkt. ich hoffe ich konnte es dir so erklären :)

[edit] wie MiNeeMAL aber richtig sagt, du solltest dich mit pointern (zeigern) wirklich auseinandersetzen, da du die überall benötigst. bestes beispiel char *string = new char[n] ;)
 
Zuletzt bearbeitet:
hi
ggt, hehe, insider wissen bescheid^^.

das prob läßt sich auch mit vererbung lösen....(letztendlich auch unausweichlich)
mfg
 
Tider schrieb:
das prob läßt sich auch mit vererbung lösen....(letztendlich auch unausweichlich)
mfg

Hmm?? Was hat zum Teufel hat Vererbung mit diesem Thema zu tun, und seit wann gibt es in C überhaupt Vererbung?
 
WinKill schrieb:
Referenzen zu verstehen hilft Dir, viel Zeit zu sparen. Vielleicht solltest jetzt einen kleinen Exkurs dazu machen.

Zum Topic, ich hab kurz gegoogelt und finde, hier ist eine gute und ausführliche - deutsche - Übersicht mit C Beispiel:

http://blog.gungfu.de/archives/2005...zwischen-call-by-value-und-call-by-reference/

Viel Spaß
winni

Ich würde das Übergeben von Parametern via Pointer in C nicht als Hantieren mit "Referenzen" bezeichnen. Anders als in C++ gibt es in C Referenzen als Bestandteil der Sprache nicht, deshalb könnte es für Neulinge verwirrend sein, von Referenzen zu reden, wenn man eigentlich Pointer meint.
 
Zurück
Oben