Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

JossBoss

Treue Seele

  • »JossBoss« ist der Autor dieses Themas

Beiträge: 182

Wohnort: Luxemburg

  • Private Nachricht senden

1

30.07.2005, 10:43

Wann return und wann nicht?

Also ich hab einige Verständnis Probleme mit der return Funktion. Wieso braucht man die? Um Werte zurückzuliefern?, aber es gibt doch auch verschiedene Funtionen, in denen Additionen oder ähnliches deklariert sind, und eigentlich auch ein Ergebnis (der addition oder subrtaktion,...) zurückliefern aber, man findet keine return Funktion.... Und sie ist auch nicht vom Typ void. :crying:
Meine THeorie ist, dass man nur return einfügen muss, wenn man noch in der Hauptfunktion oder einer anderen mit jenem Ergebnis weiterarbeiten möchte. Wenn man es aber mittels cout oder ähnlicher methoden ausgeben möchte benötigt man return nicht....
Bitte helft mnir ich dreh mich auf der Felge!! :)

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

2

30.07.2005, 11:14

Also return- und funktion sind zwei gegensätzliche Dinge. Mit Return springst du grundsätzlich aus einer Funktion raus, ob das nun

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
int main(char* argv[], int argc)
{

//rausspringen

return;
}

oder

void meineFunktion(void)
{
return;
}


ist, ist egal. Man kann mit return auch Werte zurückliefern z.B.

C-/C++-Quelltext

1
2
3
4
int plus(int a, int a)
{
return a+b;
}


Man kann aber Werte auch per Pointer zurückgeben

C-/C++-Quelltext

1
2
3
4
int copysting(char* pString)
{
sprintf(pString, "Hello world");
}


Das return ist also da um
1.) die funktion/prozedur an dem Punkt zu beenden
2.) Werte über den stack zurückzuliefern

Beispiel:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
int divide(int a, int b)
{
if(b > 0)
return a/b;
else
cout << "Fehler";

cout << "Dieser Text kommt nur wenn Fehler gekommen ist";
return 0;

cout << "Dieser Text ist sinnlos, er kommt nie";
}


p.s. sry für formatierungen

JossBoss

Treue Seele

  • »JossBoss« ist der Autor dieses Themas

Beiträge: 182

Wohnort: Luxemburg

  • Private Nachricht senden

3

30.07.2005, 13:09

np danke für die hilfe, allerdings hapert es noch immer ein klein wenig ;) was z.B. ist ein stack?? bei mir läufts aber auch dass ich werte über funktionen übergeben kann ohne return oder zeiger also mit ganz normalen variablen oder irre ich mich da??? ???

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

4

30.07.2005, 13:25

Das geht nicht. Er muss ja wissen welche Var er zurück geben muss
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

J.M.K.

Alter Hase

Beiträge: 500

Wohnort: BW Karlsruhe Ittersbach

Beruf: Schüler

  • Private Nachricht senden

5

30.07.2005, 13:34

http://de.wikipedia.org/wiki/Stapelspeicher

das ist der Stack :)

Dave

Alter Hase

Beiträge: 757

Wohnort: Berlin

  • Private Nachricht senden

6

30.07.2005, 18:00

Zitat von »"JossBoss"«

bei mir läufts aber auch dass ich werte über funktionen übergeben kann ohne return oder zeiger also mit ganz normalen variablen oder irre ich mich da??? ???


was meinst du damit? callbyvalue?

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

7

30.07.2005, 19:36

du kannst in Funktionen Werte ausrechnen lassen, diese dann auf demj speicher direkt verändern (pointer) oder zurückgeben (return)

Werbeanzeige