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

23.08.2007, 20:47

Frage zu Listing 6.5

Also,ich bin jetzt bei Listing 6.5 und verstehe eine Sache nicht.

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
25
26
27
28
29
#include <iostream>

using namespace std;

// Prototypen

//

void BerechnePunkte(int *pPunkte, int Bonus);

// Hauptprogramm

//

int main ()
{
   // Variablen

   //

   int Punkte = 500;
   int Bonus = 150;

   // Punkte vor Funktionsaufruf   


   BerechnePunkte(&Punkte, Bonus);

   // Punkte nach Funktionsaufruf

   return 0; 
}

void BerechnePunkte (int *pPunkte, int Bonus)
{
*pPunkte += Bonus
}

Wo wird denn da der Zeiger deklariert und mit der Adresse von Punkte initialisiert?

Zitat von »"david_pb "«

Zitat von »"Mapa"«

Weißt du zufällig wie ich nen buchstaben dunkelgrün mache? das würde mir helfen :)

Gib ihm verdorbenes Essen!

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

2

23.08.2007, 20:57

Hä??

C-/C++-Quelltext

1
BerechnePunkte(&Punkte, Bonus);


Der Operator & vor Punkte übergibt die Adresse an den Zeiger im ersten Parameter.
@D13_Dreinig

3

23.08.2007, 21:00

Ah,danke. Ich glaub ich hab da was verpeilt. Oder da steht echt nichts Oo

Zitat von »"david_pb "«

Zitat von »"Mapa"«

Weißt du zufällig wie ich nen buchstaben dunkelgrün mache? das würde mir helfen :)

Gib ihm verdorbenes Essen!

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

4

23.08.2007, 21:02

Was genau meinst du? Ist dir klar war der Adressoperator macht?
@D13_Dreinig

5

28.08.2007, 13:01

Ja,aber mir war nicht klar das man im Parameter lokale Variablen deklarieren kann ._.

Zitat von »"david_pb "«

Zitat von »"Mapa"«

Weißt du zufällig wie ich nen buchstaben dunkelgrün mache? das würde mir helfen :)

Gib ihm verdorbenes Essen!

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

6

28.08.2007, 13:19

Zitat von »"ForteSP"«

Ja,aber mir war nicht klar das man im Parameter lokale Variablen deklarieren kann ._.


Kann man ja auch garnicht!
@D13_Dreinig

7

29.08.2007, 14:41

Zitat von »"David_pb"«

Zitat von »"ForteSP"«

Ja,aber mir war nicht klar das man im Parameter lokale Variablen deklarieren kann ._.


Kann man ja auch garnicht!

(int *pPunkte) Wo wird der denn dann deklariert wenn er es nicht hier wird?

Zitat von »"david_pb "«

Zitat von »"Mapa"«

Weißt du zufällig wie ich nen buchstaben dunkelgrün mache? das würde mir helfen :)

Gib ihm verdorbenes Essen!

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

8

29.08.2007, 14:45

Zitat von »"ForteSP"«

Zitat von »"David_pb"«

Zitat von »"ForteSP"«

Ja,aber mir war nicht klar das man im Parameter lokale Variablen deklarieren kann ._.


Kann man ja auch garnicht!

(int *pPunkte) Wo wird der denn dann deklariert wenn er es nicht hier wird?


Hier wird im Parameter auf jedenfall keine lokale Variable deklariert. Alles was hier deklariert wird ist ein Parameter dem eine Variable (ob lokal/global oder sonstwas) übergeben werden kann.
@D13_Dreinig

9

29.08.2007, 14:51

Zitat von »"David_pb"«

Zitat von »"ForteSP"«

Zitat von »"David_pb"«

Zitat von »"ForteSP"«

Ja,aber mir war nicht klar das man im Parameter lokale Variablen deklarieren kann ._.


Kann man ja auch garnicht!

(int *pPunkte) Wo wird der denn dann deklariert wenn er es nicht hier wird?


Hier wird im Parameter auf jedenfall keine lokale Variable deklariert. Alles was hier deklariert wird ist ein Parameter dem eine Variable (ob lokal/global oder sonstwas) übergeben werden kann.

Aso...jetzt versteh ich das...Danke.
[size=1]Wieder ein bisschen gelernt...[/size]

Zitat von »"david_pb "«

Zitat von »"Mapa"«

Weißt du zufällig wie ich nen buchstaben dunkelgrün mache? das würde mir helfen :)

Gib ihm verdorbenes Essen!

Nelrim

Frischling

Beiträge: 33

Beruf: Entwicklungskonstrukteur

  • Private Nachricht senden

10

08.02.2008, 18:26

Ich bin gerade über das gleiche gestolpert und wollte schon einen neuen thread aufmachen, hab dann aber doch zuerst mal die suchen funktion des forums genutzt...

also so ganz habe ich es glaube noch nicht kapiert:

in den Listings 6.3 und 6.4 wird großartig erklärt wie man einen Zeiger deklariert

Listing 6.3 Zeile 18:

C-/C++-Quelltext

1
int *pPunkte = NULL;

Zeile 22:

C-/C++-Quelltext

1
pPunkte = &Punkte;


Es wird mehrfach darauf hingewiesen wie wichtig und sinnvoll es doch ist den Zeiger mit 0 zu initialisieren:

Seite 161:

Zitat

Wenn Du einen Zeiger deklarierst, vergiss nicht, ihn sicherheitshalber noch in der gleichen Zeile mit NULL oder 0 zu initialisieren, um Programmabstürze zu vermeiden...


in Listings 6.5 und 6.6 tauchen dann zwar Zeiger irgendwie auf, doch die eben erklärte Deklaration und initialisierung sucht man vergebens...

hier gibts den Zeiger *pPunkte auch:
Listing 6.5 Zeile 11:

C-/C++-Quelltext

1
 void BerechnePunkte (int *pPunkte, int Bonus);

aber eine initialisierung mit NULL oder 0 finde ich nicht.
an die Funktion wird dann die Adresse &Punkte als Parameter weitergegeben.
Zeile 31:

C-/C++-Quelltext

1
BerechnePunkte (&Punkte,Bonus);


Daraus schliesse ich, das die Parameterübergabe der Adresse an einer Stelle an der im Funktionsprototyp ein Zeiger int *pZeiger erwartet wird gleichbedeutend ist mit:
Rückschluss:

C-/C++-Quelltext

1
*pPunkte = &Punkte

jetzt wäre ich glücklich und zufrieden wenn es diese Zeile in den Listings 6.3 oder 6.4 gäbe... leider steht da aber: Zeile 22:

C-/C++-Quelltext

1
pPunkte = &Punkte;
also ohne sternchen... was mir wieder ein Fragezeichen über den Kopf zaubert.

kann mir das nicht mal jemand für doofe erklären?

wäre echt lieb.

Nelrim
Auch der längste Weg beginnt mit einem ersten Schritt.

Werbeanzeige