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

1

21.07.2008, 12:32

Frage bzgl der Funktionsparameter (Listing 4.4)

Hallo an allle
hab mir vor ein paar Jahren mal das Buch gekauft, sprich es ist noch die erste Auflage.
Es geht um folgendes
Die Erklärung von Listing 4.4 bereitet mir ein wenig Probleme (Seite 100-101)

Zitat: "Was hier (und im Prototyp in der Zeile) auffällt, ist die Tatsache, dass wir für den Rückgabewert nur den Datentyp angeben, für die Parameter allerdings Datenyp und einen Namen. ..."

Inwiefern wird für den Rückgabewert nur der Datentyp angegeben?
es heißt doch
return Temp
Temp ist doch hier ein Variablen Name und kein Datentyp?
Und wo wird sich im Prototyp auf einen Rückgabewert bezogen :?:

viele Grüße

neido

Treue Seele

Beiträge: 225

Wohnort: Wien

  • Private Nachricht senden

2

21.07.2008, 12:50

int berechnePunkte()

bedeutet dass der Rückgabewert den Datentyp int hat, und den hat Temp auch

//Edit: Du solltest Quellcode angeben damit sich auch diejenigen auskennen, die das Buch nicht gerade bei der Hand haben

3

21.07.2008, 13:26

Nja im Prinzip stimmt es aber nicht ganz.

In der Definition:

C-/C++-Quelltext

1
2
3
4
5
return_type foo(parameter_type1 first, parameter_type2 second, ...)
{
    return_type var;
    return var;
}
ABER

C-/C++-Quelltext

1
return_type foo(parameter_type1, parameter_type2, ...);
in der Declaration

(Also return_type bsw. durch int usw. ersetzen ... also es ist egal was fürn Typ du da angibst und wie viele Parameter die Funktion hat, es kommt aufs Prinzip an ;) )
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

4

23.07.2008, 11:11

Danke für die Antwort. So wirklich schlauer bin ich aber nicht nach der "Definiton" von Deviloper :P
Naja ich hab ja noch ein paar andere c++ und c schinken und werde mir die mühe machen mich mit dem Thema in diesen nochmal büchern zu beschäftigen damit ich das endlich kapiere
vielen dank und viele grüße

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

5

23.07.2008, 14:15

Eigentlich ist das gar nicht soo wichtig. Du musst einfach wissen, was passiert, was man im Normalfall logisch richtig macht.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
int foo (int v,int b); //Prototype


...

int foo (int v, int b) //Definition

{
return v*b;
}
...

int h = foo (2,3); //Anwendung


Es ging ihm,wie ich mal annehme bei dem Prototypen darum, dass du du ja lediglich int zurückgibst und "keinen" Namen dazu hast. Bei den Parametern hast du aber Namen. Die Namen brauchst du ja nur, damit du auf die Variablen zugreifen kannst. (Theoretisch musst du keine Namen angeben, kannst also bei den Prototypen weglassen. Natürlich auch bei der Definition. Nur kannst du dann nicht mit den Parametern arbeiten. ;))

Wenn du jetzt die Funktion benutzt, fungiert eigentlich der Funktionsname als "Variable", du dann nutzen kannst, um damit zu arbeiten. foo (2,3) ist dann, wenn du dir das so vorstellen willst lediglich ein anderen Namen für einen Integer mit dem Wert, den dir foo hald zurückgibt. (hier 6).

Wie gesagt ist das ganze eigentlich gar nicht so wichtig. Du musst einfach wissen, wie es funktioniert und das machst du automatisch richtig. ;)

6

23.07.2008, 14:22

Mit dem Zitat war sicher der Rückgabetyp beim Funktionstyp gemeint. Da wird ja tatsächlich nur der Datentyp angegeben. Also:

C-/C++-Quelltext

1
2
3
4
5
6
7
int MeineFunktion (int x, int y) //Das "int" ganz vorne ist der Rückgabewert

{
     int Temp = x + y;

     return Temp; 
/* Hier wird tatsächlich kein Datentyp angegeben, was in dem Zitat aus dem Buch wohl auch nicht gemeint war. Wenn Temp kein "int" wäre, würde der Compiler einen Fehler ausspucken, da als Rückgabewert im Funktionskopf ja int als Rückgabetyp bezeichnet wurde.*/
}


Edit:Ich hoffe mal, dass ich dir nicht gerade irgendwas erklären wollte, was du schon kapiert hast. :D Aber Drakons Post sollte sowieso aufschlussreicher sein.

Werbeanzeige