funktion rückgabe
-
aha, auch wenn das beispiel mit dem string nicht funktioniert
[Linker error] undefined reference to `stringtoint(std::string)' // ich weiss noch nicht welche header ich dafür einbinden muss. // #include<string> oder <sstream> oder <cstring> ist es nicht, nun denn
glaube ich es dennoch verstanden zu haben.
wenn ich als rückgabetyp der funktion int verwende dann wird dieser auch immer als int zurückgegeben, egal welche parameterdatentypen ich verwende und egal wie der datentyp des gesamtausdrucks (aus der funktion) ist.
wenn ich aber void als rückgabetyp verwende dann wird der datentyp der rückgabe vom wert des ausdrucks (in der funktion) benutzt.
ist das so richtig verstanden und ausgedrückt?
das hilft mir dann zumindest mal weiter um zu verstehen warum .........
-
unregistred schrieb:
aha, auch wenn das beispiel mit dem string nicht funktioniert
[Linker error] ...
Das ist keine Standardfunktion, sondern nur ein Beispiel. otze hatte halt keine Lust, sich eben die Funktion ausm Ärmel zu schütteln und deshalb nur den Prototyp angegeben.
unregistred schrieb:
wenn ich als rückgabetyp der funktion int verwende dann wird dieser auch immer als int zurückgegeben, egal welche parameterdatentypen ich verwende
Richtig, wäre auch anstrengend, wenn sich der Rückgabetyp einfach mal ändern könnte...
unregistred schrieb:
... und egal wie der datentyp des gesamtausdrucks (aus der funktion) ist.
wenn ich aber void als rückgabetyp verwende dann wird der datentyp der rückgabe vom wert des ausdrucks (in der funktion) benutzt.
Ab hier kapier ich nicht mehr, was du meinst.
void heißt einfach "Funktion gibt nix zurück". Soll eine Funktion aber was zurückgeben, gibste halt den entsprechenden Typ an - egal, ob int, float oder selbstdefinierte Typen oder Zeiger darauf...edit
Nach nochmaligem Lesen hab ich's, glaub ich.
Also, wenn du z.B. int als Rückgabetyp wählst, in der Funktion aber versuchst, deinem return einen float mitzugeben, wird dein Compiler meckern. Ich denk mal, das meintest du mit "datentyp des gesamtausdrucks"...
-
void heißt einfach: Die Funktion gibt nichts zurück. Nicht mehr und nicht weniger.
-
Also, wenn du z.B. int als Rückgabetyp wählst, in der Funktion aber versuchst, deinem return einen float mitzugeben, wird dein Compiler meckern. Ich denk mal, das meintest du mit "datentyp des gesamtausdrucks"...
ja so meinte ich es auch
schlecht ausgedrückt. man müsste den float in dem fall umwandeln damit der compiler nicht meckert.void gibt nichts zurück. da hatte ich halt meine probleme mit, warum gibt der nichts zurück wenn der wert aber doch an den aufrufer zurückgegeben wird. ich habe hier nicht unterschieden zwischen rückgabetyp der funktion und dem rückgabetyp des wertes des ausdrucks in der funktion.
ich dussel dachte wenn die funktion mit void nichts zurückgibt wie kommt dann der wert an den aufrufer zurück *gg* und somit den sinn der funktion in frage gestellt.
jetzt habe ich es aber.ich bedanke mich
-
gugg dir mal dieses beispiel an:
#include <iostream> #include <string> using namespace std; void GibAus(string Ausgabe) { cout << Ausgabe << endl; } int main() { string bla = "Hallo"; GibAus(bla); }
Hier wäre es unsinnig, wenn GibAus() einen Wert zurückliefern soll, weil es nur Aktionen ausführt und keinen Wert bearbeitet und dann an die main-Funktion zur weiteren Verwendung zurückgibt.
Der Rückgabewert einer Funktion ermöglicht dir also direkte Zuweisungen:// ... int summe = Addiere(a,b); // ...
Bildlich kannst du dir also vorstellen, dass an der Stelle, wo du eine Funktion aufrufst, die einen Wert zurückgibt, dieser zurückgegebene Wert "eingesetzt" wird. Oben stände dann zum Beispiel (wenn a = 5 und b = 6 ist):
//... int summe = 11; // ...
MFG
ChrisEDIT: Funktionen ohne Rückgabewert werden übrigens auch Prozeduren genannt. Vielleicht sagt dir das mehr.
-
Zyrian schrieb:
EDIT: Funktionen ohne Rückgabewert werden übrigens auch Prozeduren genannt. Vielleicht sagt dir das mehr.
Ist das allgemeingültig? Kenn ich nur aus Pascal.
-
es gibt keine prozeduren in c++
-
otze schrieb:
es gibt keine prozeduren in c++
ok
Prozedur kann man halt imho als Synonym für eine Funktion ohne Rückgabe bezeichnen. Ich wollte halt nur ein Wort in die Runde werfen, was einem vielleicht mit der Vorstellung einer Funktion ohne Rückgabewert etwas unter die Arme greift
-
wenn du jetzt noch mit records anfängst, schlag ich dich
-
nooin
*duck*
öhh, was sind records? waren das net structs in Pascal? ich glaub, das aufgeschnappt zu haben, als mein infolehrer mal über diese "tolle" sprache philosophierte.
C.
-
jo, wo wir grad bei bildlichen ausdrückenw aren, wollte ich verhindern, dass du den auch noch dazu nimmst^^
-
naja, damit würd ich ja alles ins lächerliche ziehen