Übergabe von 2 dimensonalen Arrays
-
Entweder:
void fuellen( int _nr[][4]) { }
oder
void fuellen( int(*_nr)[4]) { }
MfG Spacelord
-
Nunja das ist meiner Meinung nach ziemlich undynamisch... Ich will ja villeicht mal das Array vergrößern dass muss ich alle Funktionen umschreiben.
-
Ja erstmal THX raff ich wohl...
FireFlow schrieb:
Achja: Du übergibst eigentlich NIE das Array an sich, sondern nur die Adresse des Arrays, das machst du ja auch in der Funktion mit dem eindimensionalen Array.
}[/cpp]
Also ist das jetzt egal ob dann * davor setze weil ichen Array dann nur als Zeige übergeben kann?????
-
Marlon schrieb:
Ja erstmal THX raff ich wohl...
FireFlow schrieb:
Achja: Du übergibst eigentlich NIE das Array an sich, sondern nur die Adresse des Arrays, das machst du ja auch in der Funktion mit dem eindimensionalen Array.
}[/cpp]
Also ist das jetzt egal ob dann * davor setze weil ichen Array dann nur als Zeige übergeben kann?????
Wo davor? Normalerweise macht so ein * mehr oder weniger schon ein Unterschied
-
Bei meinem 1 dimensonalen war das ja
void fuellen( int *_nr[][4])
und bei dem neuen hab ich nu
void fuellen( int _nr[][4]
so geht das dann au.. nur bei
#include <cstdlib> #include <iostream> using namespace std; void fuellen( int *_nr[][4]) { } int main(int argc, char *argv[]) { int nr[4][4]; fuellen(nr); system("PAUSE"); return EXIT_SUCCESS; }
sagt der mir das daen Fehler dabei is.. wo ist den da der Unterschied?
-
FireFlow schrieb:
Nunja das ist meiner Meinung nach ziemlich undynamisch... Ich will ja villeicht mal das Array vergrößern dass muss ich alle Funktionen umschreiben.
Ist aber für Anfänger geeignet :p
Und das was du da über nen Template löst kriegst du auch mit stinknormalen Konstanten hin....MfG Spacelord
-
Der Unterschied ist:
int v[][4] = { ... }; // => ist ein 2-D-Array mit Elementen vom Typ int. int* v[][4] = { ... }; // => ist ein 2-D-Array mit Elementen vom Typ Zeiger auf int.
Caipi
-
aber eine Frage hätte ich noch. Wieso muss da ne 4 mit angeben werden??? Im Buch steht da nix drüber...wieso nicht int v[][] oder int* v[][]????
-
Caipi schrieb:
Der Unterschied ist:
int v[][4] = { ... }; // => ist ein 2-D-Array mit Elementen vom Typ int. int* v[][4] = { ... }; // => ist ein 2-D-Array mit Elementen vom Typ Zeiger auf int.
Caipi
Die Wirkung is aber gleich. Das Arry befindet sich immer noch im Orginalprogramm..oder?
-
Marlon schrieb:
aber eine Frage hätte ich noch. Wieso muss da ne 4 mit angeben werden??? Im Buch steht da nix drüber...wieso nicht int v[][] oder int* v[][]????
Das hat was mit dem Datentyp zu tun. int (*v)[4] ist ein Zeiger auf ein int Array mit 4 Elementen.Das ist der Datentyp von v !Diese Information braucht der Compiler um korrekte Zeigerarithmetik bieten zu können. So berechnet der Compiler etwa aus v+1 ne Speicheradresse die der Startadresse von v + die Größe von 4 ints entspricht.Dafür ist die Größenangabe der zweiten Dimension nötig.
MfG Spacelord