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
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#include <iostream> #include <string> using namespace std; void printMonth(string* pMonths[]) { for (int i = 0; i<11; i++) cout << *pMonths[i]; } int main() { string Months[] = {"Januar", "Februar", "Maerz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"}; printMonth(&Months); } |
C-/C++-Quelltext |
|
1 2 |
error C2664: 'printMonth': Konvertierung des Parameters 1 von 'std::string (*)[11]' in 'std::string *[]' nicht möglich Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat. |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#include <iostream> #include <string> using namespace std; void printMonth(string* pMonths) { for (int i = 0; i<11; i++) cout << *pMonths[i]; } int main() { string Months[] = {"Januar", "Februar", "Maerz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"}; printMonth(&Months); } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#include <iostream> #include <string> using namespace std; void printMonth(string pMonths[]) { for (int i = 0; i<11; i++) cout << pMonths[i]; } int main() { string Months[] = {"Januar", "Februar", "Maerz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"}; printMonth(Months); } |
C-/C++-Quelltext |
|
1 |
void printMonth(string* pMonths[]) |
C-/C++-Quelltext |
|
1 |
cout << *pMonths[i]; |
Zitat
Zuerst wollte ich als Funktionsparameter eine Referenz verwenden, doch dies scheint aus mir nicht erklärlichen Gründen grundsätzlich bei Arrays nicht zu gehen.
C-/C++-Quelltext |
|
1 |
cout << *pMonths[i]; |
Ok das gibt Sinn!Zitat
musst du entweder * oder [] entfernen.
Das fällt wohl in die Kategorie Flüchtigkeitsfehler --> Vollkommen logisch!Zitat
Außerdem musst du in der Schleife entweder das < durch ein <= ersetzen oder die 11 durch eine 12. (Sonst ist ja der letzte Wert für i 10...)
Das würde mir einleuchten wenn ich keinen Zeiger als Parameter sondern per call by value übergebe.Zitat
Hier
C-/C++-Quelltext
1
cout << *pMonths;
Ist ebenfalls ein * zuviel
Und beim Funktionsaufruf musst du das & vor Months entfernen.
C-/C++-Quelltext |
|
1 |
void printMonth(string* pMonths) |
C-/C++-Quelltext |
|
1 2 3 4 5 6 |
int a = 3; int* b; b = &a; cout << b; //Adresse von b cout << *b; //3 |
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Sc4v« (27.05.2010, 17:01)
Wie also schon gesagt wurde:Das liegt daran, dass Arrays zusammenhängende Speicherblöcke sind. Das "Months" in deinem Code ist ein Zeiger auf das erste Element dieses Speicherblockes. Der []-Operator ist nur eine vereinfachte Schreibweise für *(Months+i).
C-/C++-Quelltext |
|
1 2 3 |
string Months[] = {"Januar", "Februar", "Maerz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"}; |
Man kann Arrays nur nicht als Value übergeben. Es wird immer nur der Zeiger übergeben.hä, ich hab gedacht man kann keine Arrays übergeben oder hab ich da was falsch verstanden?
um einen Doppelpost zu vermeiden steht meine Antwort für GR-PA im vorherigem Post
Zitat
wenn ich das richtig verstehe, dann übergibt man generell keine Adresse eines Arrays right?
Werbeanzeige