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

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

11

13.06.2015, 20:50

An sich sind die Probleme die du hier hast welche mit Funktionen im allgemeinen. Lies dir das Kapitel dazu noch mal durch und guck ob das vielleicht schon reicht. Mit überladen von Funktionen hat das erst mal noch nichts zu tun. Die Neuerung ist hier dass du verschiedene Funktionen mit dem selben Namen anlegen kannst. Und damit der Compiler/Übersetzer bei einem Funktionsaufruf weiß welche Funktion du denn nun gern aufrufen möchtest, müssen diese sich eben unterschieden. Normal durch die Anzahl oder die Typen der Parameter.
Für dein eigentliches Problem solltest du noch mal wiederholen was Funktionen sind und wie man damit arbeitet und falls das schon dran war, was Referenzen und Zeiger sind und wo die Unterschiede liegen bei der Übergabe als Parameter. Falls Zeiger und Referenzen erst später kommen kannst du den Teil erst mal vergessen aber vielleicht wird wenn du an dem Punkt bist dann einiges klarer.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

12

13.06.2015, 22:25

Warum aht das ncihts mit üebrladen zu tun?

Schorsch meint wohl diese Stelle.

Wie kommt der Wert der Variablen von z.B. bei int Staerke; in int Wert; in der Funktion?

Und hat vollkommen recht. Das sind allgemeine Verständnisprobleme bei Funktionen und keine Spezielen die Überladen betreffen.
Wer aufhört besser werden zu wollen hört auf gut zu sein!

aktuelles Projekt:Rickety Racquet

13

14.06.2015, 06:47

Das ist eigentlich gar nicht so schwer zu verstehen.

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
30
31
int f(int a, int b);
void g(int &a, const int& b);
void h(int* a);

int main(){
int x=5;
x=f(x,3);
//x ist jetzt 8
g(x,7);
//x ist jetzt 1
h(&x);
//x ist jetzt 6
return 1;
}

int f(int a, int b){
//a und b sind neue Variablen, die nichts mehr mit x und 3 zu tun haben, abgesehen davon, dass der Wert von x in a kopiert wurde und 3 in b.
return a+b;
}
void g(int &a, const int& b){
//a ist eine Referenz auf x. Wird a geändert, ändert sich auch x. Und würde x geändert, dann änderte sich auch a. b ist eine Referenz auf 7, kann aber nicht geändert werden, da const. Dafür können feste Werte übergeben werden, bei int& ohne const ist das nicht möglich.
//int c = b; und die Modifikation von c ist aber möglich.
a-=b;
}
void h(int* a){
//a ist die Adresse von x. a ist eine eigene Variable und hat eigenen Speicher (und demnach auch wieder eine Adresse).
int** = &a; //b ist jetzt die Adresse von a.
*a = 6; //schreibe 6 an die Adresse, die in a gespeichert ist, also wird der Speicher, in dem x gespeichert ist, modifiziert, also x auf 6 gesetzt.
*b=nullptr; //a ist jetzt ein Nullpointer (zeigt auf keinen Speicher, auf den zugegriffen werden kann), aber x wurde nicht verändert und ist immer noch 6.
b =nullptr;//b ist jetzt auch ein Nullpointer, der Zugriff auf *b ist nun nicht mehr möglich.
}
Cube Universe
Entdecke fremde Welten auf deiner epischen Reise durchs Universum.

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »Magogan« (14.06.2015, 06:55)


Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

14

14.06.2015, 11:20

Ich denke wichtig ist nicht nur zu lesen wie es funktioniert und zu glauben dass man es verstanden hat sondern konkret selbst zu gucken. Das heißt selbst die IDE auf machen und mal selbst ein paar Zeilen programmieren. Das muss nichts sinnvolles machen. Es geht einfach darum das neu gelernte mal zu benutzen und zu sehen wie es funktioniert. Ich würde einfach noch mal im Buch zurück gehen. Und mach die Aufgaben.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

15

15.06.2015, 04:56

Ich glaub der Groschen ist gefallen. Ich hab mich wo am neutralen Variablennamen "Wert" aufgehangen. An sich hab ich Funktionen verstanden. Eine Hinweistextbox im Buch hat mir aber jetzt die Augen geöffnet.

Zitat

HINWEIS: Achte unbedingt darauf, dass Du die Parameter beim Aufrufen einer
Funktion genau in der gleichen Reihenfolge angibst, wie sie im Funktionsprototyp/Funktionskopf
ausgeführt sind. Der Compiler unterscheidet hier nicht von selbst nach Namen oder Typ,
sondern allein anhand der Reihenfolge.



Und vielen Dank für die zahlreichen Hilfestellungen. :thumbsup:
Ich habe zwar keinen Computer, aber was soll's.
Ich hab mir zum üben, eine Tastatur aus Papier gemacht.

Werbeanzeige