Parameter
-
Hi, ich hab mal eine Frage. Und zwar hier erstmal der code:
#include <iostream> using namespace std; // Strukturen // struct S_Spieler { int Energie; int Punkte; int xPosition; int yPosition; char Name[30]; }; // Prototypen // S_Spieler NameAbfragen (S_Spieler Spieler); // Hauptprogramm // int main () { // Variablen // S_Spieler Spieler1; // Spieler initialisieren Spieler1.Energie = 1000; Spieler1.Punkte = 0; Spieler1.xPosition = 0; Spieler1.yPosition = 0; Spieler1.Name[0] = '\0'; // Name des Spielers abfragen Spieler1 = NameAbfragen (Spieler1); cout << "Neuer Spieler: " << Spieler1.Name << endl; return 0; } // NameAbfragen // // Aufgabe: Name des Spielers abfragen // S_Spieler NameAbfragen (S_Spieler Spieler) { // Name abfragen cout << "Name des Spielers: "; cin.get (Spieler.Name, 29); return Spieler; } // NameAbfragenSo meine Frage lautet: in der Funktion NameAbfragen wird ja S_Spieler Spieler als Parameter übergeben. So aber später steht da in der Parameterliste (Spieler1). kann mir jemad bitte erklären wieso da auf einmal Spieler1 steht?
-
Das eine hat nichts mit dem anderen zu tun. Du deklarierst eine Variable Spieler1 vom Typ S_Spieler in deiner main-Funktion. Und du legst fest, dass die Funktion NameAbfragen eine Variable NameAbfragen vom Typ S_Spieler entgegennimmt, die dann in der Funktion Spieler heißt. Wenn du nun diese Funktion aufrufst und ihr den Wert der Variablen Spieler1 übergibst, heißt das nur, dass der Wert der lokalen Variablen Spieler zugewiesen wird. Mehr nicht.
Ein Stichwort, nach dem du mal googeln kannst, ist "Call by Value".
-
Joker232 schrieb:
So aber später steht da in der Parameterliste (Spieler1).
Hä?
Naja, du übergibst in Zeile 36 ein Objekt von der Struktur...
-
Ja danke jetzt weiß ich es, bin halt noch neu beim programmieren.
-
Joker232 schrieb:
Ja danke jetzt weiß ich es, bin halt noch neu beim programmieren.
Kein Thema, deswegen kannst du ja hier nachfragen. Du musst nur noch an deiner Fachsprache arbeiten, aber das kommt schon noch. Bei Parameterliste denkt jeder sofort an einen Funktionskopf, daher die leichte Verwirrung.

-
Zum Glück hab ich dieses Forum hier gefunden

Sonst würde ich noch ewigkeiten hier sitzen. Und jetzt kapier ich auch endlich wie diese Zeiger funktionieren^^