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

26.12.2010, 23:03

Funktionen

Hab da eine kurze Frage zu meiner Funktion.

Und zwar arbeite ich mich gerade durch Kalista's Buch durch.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
using namespace std;
void erhoehePunkte (int Punkte);

int main(){
    int Punkte = 1000;

    cout << "Punkte vor Funktionsaufruf : " << Punkte << endl;

    erhoehePunkte (Punkte);

    cout << "Punkte nach Funktionsaufruf : " << Punkte << endl;

    return 0;
}

void erhoehePunkte (int Punkte){
    Punkte+=100;
}


Das Progi funktioniert ja auch wie es soll, aber was ist wenn ich genau bei meiner Funktion meine Punkte erhöhen will?

2

26.12.2010, 23:18

Was genau meinst du mit "genau bei meiner Funktion"?

Also die Funktion in diesem Beispiel hat keinen Nutzen. Die Variable Punkte ist in der Main-Funktion definiert und gilt auch nur innerhalb dieser Funktion. Jetzt wird sie als Parameter der Funktion erhoehePunkte() übergeben, dabei wird eine neue Variable Punkte, nur gültig innerhalb dieser Funktion erhoehePunkte(), mit dem übergebenen Wert angelegt und diese wird dann um 100 Punkte erhöht. Das beeinflusst allerdings nicht die Variable Punkte in der Main-Funktion, die ausgegeben wird. Wenn du das möchtest, dann kannst du die Variable aus der Funktion erhoehePunkte() mit Hilfe eines Rückgabewertes an die Main-Funktion zurückgeben und dort so die Variable ändern.

Es geht also darum zu erkennen, in welchen Bereichen eine Variable gültig ist und das zwei Variablen nicht umbedingt identisch sein müssen nur weil sie den gleichen Namen haben. Wenn sie sich nämlich in unterschiedlichen Bereichen (oder auch Scopes) befinden, dann sie sind auch getrennt von einander zu betrachten.

So würde das Beispiel "funktionieren" - aber zum Thema Rückgabewerte schaust du dir einfach das Buch weiter an:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
using namespace std;
int erhoehePunkte (int Punkte);

int main(){
    int Punkte = 1000;

    cout << "Punkte vor Funktionsaufruf : " << Punkte << endl;

    Punkte = erhoehePunkte (Punkte);

    cout << "Punkte nach Funktionsaufruf : " << Punkte << endl;

    int i;
    cin >> i;

    return 0;
}

int erhoehePunkte (int Punkte){
    Punkte+=100;

    return Punkte;
}



Gruß
SaRu_

3

26.12.2010, 23:26

Was genau meinst du mit "genau bei meiner Funktion"?

Also die Funktion in diesem Beispiel hat keinen Nutzen. Die Variable Punkte ist in der Main-Funktion definiert und gilt auch nur innerhalb dieser Funktion. Jetzt wird sie als Parameter der Funktion erhoehePunkte() übergeben, dabei wird eine neue Variable Punkte, nur gültig innerhalb dieser Funktion erhoehePunkte(), mit dem übergebenen Wert angelegt und diese wird dann um 100 Punkte erhöht. Das beeinflusst allerdings nicht die Variable Punkte in der Main-Funktion, die ausgegeben wird. Wenn du das möchtest, dann kannst du die Variable aus der Funktion erhoehePunkte() mit Hilfe eines Rückgabewertes an die Main-Funktion zurückgeben und dort so die Variable ändern.

Es geht also darum zu erkennen, in welchen Bereichen eine Variable gültig ist und das zwei Variablen nicht umbedingt identisch sein müssen nur weil sie den gleichen Namen haben. Wenn sie sich nämlich in unterschiedlichen Bereichen (oder auch Scopes) befinden, dann sie sind auch getrennt von einander zu betrachten.

So würde das Beispiel "funktionieren" - aber zum Thema Rückgabewerte schaust du dir einfach das Buch weiter an:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include 
using namespace std;
int erhoehePunkte (int Punkte);

int main(){
    int Punkte = 1000;

    cout << "Punkte vor Funktionsaufruf : " << Punkte << endl;

    Punkte = erhoehePunkte (Punkte);

    cout << "Punkte nach Funktionsaufruf : " << Punkte << endl;

    int i;
    cin >> i;

    return 0;
}

int erhoehePunkte (int Punkte){
    Punkte+=100;

    return Punkte;
}



Gruß
SaRu_</iostream>

danke, habs verstanden:)

pepe1995

Frischling

Beiträge: 60

Wohnort: Warngau

Beruf: Schüler (10.)

  • Private Nachricht senden

4

27.12.2010, 16:55

oder mit zeiger aber dazu kommst du noch ^^
www.4story.de
ROCKT! ;)

BlazeX

Alter Hase

Beiträge: 478

Wohnort: DD

Beruf: Maschinenbau-Student

  • Private Nachricht senden

5

27.12.2010, 16:58

Oder mit Referenzen, aber dazu kommst du auch noch ^^

Werbeanzeige