Multidimensionales Array an Funktion übergeben (Pointer?)
-
Siehe Titel.
#include <cstdlib> #include <iostream> using namespace std; int func1(/*HIER1*/, int); int main(int argc, char *argv[]) { int Array[2][2]; Array[0][0] = 1; Array[0][1] = 2; Array[1][0] = 3; Array[1][1] = 4; cout << func(/*HIER2*/, 1) << endl; system("PAUSE"); return EXIT_SUCCESS; } int func(/*HIER3*/, int pos) { return a[pos][pos]; }(sollte Array[1][1] == 4 ausgeben)
Was muss ich an den Stellen HIER1, HIER2 und HIER3 einfügen? Hab schon viel mit Pointern rumprobiert, kriegs aber nicht hin. In main() wird die Größe des Arrays erst eingelesen, deshalb kann es nicht global sein. Ich brauche das Array aber zur weiteren Verarbeitung in func().
-
int func1(int[2][2], int); cout << func(Array, 1) << endl; int func(int a[2][2], int pos){ };Funktioniert, sieht aber doof aus.
-
scel schrieb:
In main() wird die Größe des Arrays erst eingelesen
soll heissen, dass das Array in jedem Programmdurchlauf ne andere Größe haben kann. Nur die Zweidimensionalität bleibt erhalten.
-
scel schrieb:
In main() wird die Größe des Arrays erst eingelesen, deshalb kann es nicht global sein.
In dem Fall klasppt das mit dem "int Array[2][2];" aber nicht wirklich (dessen Größe ist fest) - du benötigst einen int** oder int* (da mußt du selber die Indizes umrechnen), den du selber zu einem Array aufbauen kannst:
//a: int func1(int** a,int p) {return a[p][p];} int main() { int** array=new int*[xs]; for(int i=0;i<xs;++i) array[i]=new int; func1(array,pos); }