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 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
#include <iostream> using namespace std; int fuellearray(int *pXarray); int main() { int Xarray[8][8]; fuellearray(&Xarray); for(int x = 0; x < 8; x++) { for (int y = 0; y < 8; y++) { cout << Xarray[x][y]; } cout << endl; } system("pause"); return 0; } int fuellearray(int *pXarray) { for(int x = 0; x < 8; x++) { for (int y = 0; y < 8; y++) { pXarray[x][y]=1; } } } |
Zitat
error C2664: 'fuellearray': Konvertierung des Parameters 1 von 'int (*)[8][8]' in 'int *' nicht möglich
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 |
#include <iostream> using namespace std; void fuelleArray(int* EinArray); int main() { int array[8]; fuelleArray(array); for(int i = 0; i < 8; i++) { cout << array[i]; } cout << endl; while (1); return 0; } void fuelleArray(int* EinArray) { for(int i = 0; i < 8; i++) { EinArray[i] = 9; } } |
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 32 33 34 35 36 37 38 |
#include <iostream> using namespace std; void fuellearray(int *pXarray, int dim1, int dim2); // dim1 und dim2 sind die Dimensionen der mehrdimensionalen Arrays int main() { int Xarray[8][8]; fuellearray(&Xarray[0][0],8,8); // Referenz auf erstes Element muss ermittelt (v[0] alternativ mögl.) for(int x = 0; x < 8; x++) { for (int y = 0; y < 8; y++) { cout << Xarray[x][y]; } cout << endl; } system("pause"); return 0; } void fuellearray(int *pXarray, int dim1, int dim2) { for(int x = 0; x < dim1; x++) { for (int y = 0; y < dim2; y++) { pXarray[x*dim2+y] = 1; // Mehrdimensionale Arrays existieren nur im Quellcode!! } } } |
Ich würde mir an deiner Stelle überlegen, ob das nicht besser lösbar ist. Anfangs scheint es natürlich bequemer, wenn man sich nicht um Hierarchien und Zuständigkeiten kümmern muss, sondern alles global zugreifbar hat, aber spätestens bei grösseren Projekten kann das recht mühsam werden. Langfristig gesehen handelt man sich eine Menge Probleme ein, darunter unnötige Abhängigkeiten, nicht nachvollziehbare Zugriffe und erschwertes Debugging. Also versuche vielleicht in Zukunft, globale Variablen soweit möglich zu vermeiden.Zitat von »"NotGood"«
Ich wollte nämlich gerne die Felder von überall aus dem Programm ansprechen können, ohne den Array Global machen zu müssen
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 32 33 |
#include <iostream> using namespace std; void fuellearray(int array[8][8]); int main() { int Xarray[8][8]; fuellearray(Xarray); for(int x = 0; x < 8; x++) { for (int y = 0; y < 8; y++) { cout << Xarray[x][y]; } cout << endl; } return 0; } void fuellearray(int array[8][8]) { for(int x = 0; x < 8; x++) { for (int y = 0; y < 8; y++) { array[x][y] = 1; } } } |
Zitat von »"dot"«
Nur der Vollständigkeit halber: Du kannst ein mehrdimensionales Array auch normal an eine Funktion übergeben, ganz ohne irgendwelche Hacks Wink
idontknow
unregistriert
Zitat von »"GR-PA"«
Zitat von »"dot"«
Nur der Vollständigkeit halber: Du kannst ein mehrdimensionales Array auch normal an eine Funktion übergeben, ganz ohne irgendwelche Hacks Wink
Aber nur wenn beide oder die 2. Dimension bei der Erstellung der Funktion bekannt sind. Das führt aber bei größerem Code schnell zu viel Arbeit, wenn sich die Anzahl der Dimensionen ändert. Außerdem schränkt es den Nutzwert einer solchen Funktion stark ein, da sie nur Arrays der vorgegebenen Größe verwenden kann.
Aber wie bereits von Jonathan_Klein gesagt: verwende besser std::vector, dann hast du diese und andere Probleme nicht.
Zitat von »"idontknow"«
das ganze mit dynamischen 2d arrays zu lösen sollte auch kein problem sein!
Werbeanzeige