Return wert
-
Hallo erstmal.
ich bin c anfänger und ich weiss das ich einige hier sicher an den kopf greifen werden, aber ich hab zu dem thema irgendwie nix gefunden.was ist eigentlich der return wert? ich hab bis jetzt gedacht das ist das "endergebnis". aber dann bin ich über folgendes gestoplpert:
....Das Konzept von Prozeduren kommt aus den imperativen
Programmiersprachen, und es bezeichnet eine Zusammenfassung
mehrerer Anweisungen zu einem direkt aufrufbaren Ganzen. Prozeduren nehmen
Parameter, liefern aber keinen return-Wert....das geht mir irgendwie nicht ein. warum diese prozeduren keinen return wert haben, oder haben müssen.
hoffe mal auf antwort.
lg,
j
-
Das Konzept der Prozeduren neben den Funktionen ist eigentlich veraltet und imho absolut unnötig. Eine Prozedur ist nach dieser Definition eben einfach eine Funktion ohne Rückgabewert. Man hat früher in alten Versionen von Basic oder Clipper zwischen Funktion und Prozedur unterschieden. Aber vergiss das einfach wieder. In C schreibst du Funktionen, und die müssen auch keinen Rückgabewert haben.
int myFunc(int); //gibt einen int zurück void mySecondFunc(int) //gibt void, also nix zurück
-
wow! das ging ja fix!
danke für die antwort. aber hab ich das jetzt richtig verstanden das der return wert eine art "endergebnis" ist?
-
Ja, im Grunde schon. Das ist das Ergebnis einer Funktion. (Trivial-)Beispiel:
long int Quadrat(int a) { return a*a; } //Aufruf: long int x=Quadrat(2); //x bekommt das Ergebnis 4 zugewiesen
Die Funktion braucht einen int-Parameter a. Diesen quadriert sie und gibt das ergebnis als long int per return-Anweisung zurück.
-
Beispiel:
class Klasse { private: int tolleVariable; public: int *tolleVariable_return(); }; int *Klasse::tolleVariable_return() { tolleVariable=12; return tolleVariable; };
Knackts? (-:
return gibt immer den Wert an die Funktion zurück. Damit du wie in meinem Beispiel den return an die Methode zurückgeen kannst, musst du die Methoden als Zeiger vom Typ Integer deklarieren. Ohne Zeiger könnte man beispielsweise in der OOP keinen Wert an die Methode zurückgeben.Die Methode würde hier also dem/n Wert 12 entsprechen und zurückgeben.
-
way schrieb:
return gibt immer den Wert an die Funktion zurück. Damit du wie in meinem Beispiel den return an die Methode zurückgeen kannst, musst du die Methoden als Zeiger vom Typ Integer deklarieren. Ohne Zeiger könnte man beispielsweise in der OOP keinen Wert an die Methode zurückgeben.
^^selten so einen totalen quatsch gelesen.
-
~fricky schrieb:
way schrieb:
return gibt immer den Wert an die Funktion zurück. Damit du wie in meinem Beispiel den return an die Methode zurückgeen kannst, musst du die Methoden als Zeiger vom Typ Integer deklarieren. Ohne Zeiger könnte man beispielsweise in der OOP keinen Wert an die Methode zurückgeben.
^^selten so einen totalen quatsch gelesen.
Und was soll das überhaupt im C-Forum?
-
Die Erklärung war an das Beispiel gerichtet
-
return gibt immer den Wert an die Funktion zurück.
Welchen Wert an welche Funktion?
den return
Den würd ich auch gern mal kennenlernen...
musst du die Methoden als Zeiger vom Typ Integer deklarieren.
Und die Zeiger auf Integer möchtest du dann aufrufen?
Ohne Zeiger könnte man beispielsweise in der OOP
Seit wann ist C objektorientiert?
keinen Wert an die Methode zurückgeben.
Da ist ja schon wieder diese mysteriöse Methode. Aber ich bin mir trotzdem ziemlich sicher, dass Funktionen auch in objektorientierten Sprachen Werte zurückgeben können, ganz ohne dabei mit Zeigern hantieren zu müssen.
Die Methode würde hier also dem/n Wert 12 entsprechen und zurückgeben
Nö, das kompiliert erst gar nicht. Nicht einmal mit einem C++ - Compiler.
-
way schrieb:
Die Erklärung war an das Beispiel gerichtet
das meinte ich auch so. dein beispiel ist schon mist, aber die erklärung dazu ist absolut hanebüchend.
-
way, mal abgesehen von der bisherigen Kritik an deinem OOP-Beispiel im C-Forum wirst du dein Beispiel doch nicht mal kompilieren können. tolleVariable ist so toll nicht, da sie vom Typ int ist, tolleVariable_return aber einen int-Zeiger zurückgeben möchte. Ergo müsstest du also die Adresse von deiner tollen Variable (&tolleVariable) zurückgeben, nicht ihren Wert.
Abgesehen davon muss man einem Anfänger, der kaum Vorwissen hat und danach fragt, was ein Rückgabewert ist, nicht gleich mit OOP, Member und dergleichen kommen. Das wird er noch früh genug lernen, ihn in dieser Phase aber sicher erst mal verwirren...