dynamische 2D felder
-
hab mal dieses beispiel gefunden
main() { int n,m,i,j; double **b; cout << " Eingabe Zeilen n : "; cin >> n; cout << " Eingabe Spalten m : "; cin >> m; b = new (double* [n]); for (i = 0; i < n; i++) { b[i] = new double[m]; } for (i = 0; i < n; i++ ) { for (j = 0; j < m; j++) { b[i][j] = (i+1)*(j+1); } } ... for (i = n-1; i >= 0; i--) { delete [] b[i]; } delete [] b; }diese zeile ist mir nicht ganz klar:
b = new (double* [n]);ohne den stern würde ich n mal 8 byte alloziieren und b würde als einfach pointer auf die erste adresse des bereichs zeigen.ok!
b ist aber jetzt ein pointer auf pointer. was passiert in der oben erwähnten zeile?was wird alloziiert?wohin zeigt b?steige da nicht so ganz durch
-
bei double werden doubles angelegt, bei double* Zeiger auf doubles.
-
du erzeugst damit ein array von pointern auf double felder die irgendwo anders liegen.
so wie hier
double* pd = new double*[10]; for (size_t i = 0; i < 10; ++i) pd[i] = new double[100]; pd[0][99] = 10.0f;