Zweidimensionales Array
-
Bei einem 1-dimensionalen Array stehen ja alle Werte im Speicher hintereinander.
zB
double values[] = {1,2,3,4,5,6};Ist es garantiert, dass auch bei einem 2-dimensionalen Array alle Werte hintereinander stehen? zB
double values[2][3] = {1,2,3,4,5,6};d.h. values[0] würde im 2. Fall wieder auf ein 1-dimensionales Array der Länge 2 zeigen?
Die Frage ist bei mir in dem Zusammenhang aufgetaucht, da ich 2-dimensionale double-Arrays habe, aber eine Funktion, die einen double* nimmt. Kann ich dieser Funktion dann einfach values[0] übergeben?
Thx für Tipps.
Gruß,
Lemmy
-
Nimm den Debugger und guck dir die Adressen an.
Oder pack die Matrix in Schleifen, richte einen Zeiger auf jedes Element und lass es ausgeben.
-
Kuckuck !
Bei mir werden die Elemente der Matrix im Speicher hintereinander abgelegt.
Bei diesem Testprogramm ergibt sich eine konstante Differenz der Adressen:#include <iostream> using namespace std; int main() { double values[3][3]; double* pbuf[9]; for ( int i = 0, int k = 0; i < 2, k < 9; i++, k++ ) { for( int j = 0; j < 3; j++ ) { pbuf[k] = &values[i][j]; } } for ( k = 0; k < 8; k++ ) { cout << pbuf[k+1] - pbuf[k] << endl; // Konstante Differenz. } return 0; }Ob das allerdings generell so ist, weiß ich nicht.
Gruß,
p.