?
Ja ich hab mich heute morgen nochmal rangesetzt und habs jetzt anscheinend geschnallt. Es wurde nocheinmal im Buch drauf eingegangen, wie man 2D Arrays über eine Funktion ausgibt. Nachdem ich da durchgeblickt habe, war es relativ einfach. Die Übung war es dann das gleiche zu tun, nur diesmal mit einem 3D-Array. Ich hab mich sofort drangemacht und war innerhalb von 20min fertig. Und wow, es funktioniert sogar
#include <iostream>
#include <conio.h>
template<typename T>
void ausgabe2D(T tabelle, size_t n) {
const size_t MAX = sizeof(tabelle[0]) / sizeof(tabelle[0][0]);
for(size_t i = 0; i < n; ++i) {
for(size_t j = 0; j < MAX; ++j) {
std::cout << tabelle[i][j];
}
std::cout << std::endl;
}
}
template<typename T>
void ausgabe3D(T tabelle, size_t n) {
const size_t MAX_Y = sizeof(tabelle[0]) / sizeof(tabelle[0][0]);
const size_t MAX_Z = sizeof(tabelle[0][0]) / sizeof(tabelle[0][0][0]);
for(size_t i = 0; i < n; ++i) {
for(size_t j = 0; j < MAX_Y; ++j) {
for(size_t k = 0; k < MAX_Z; ++k) {
std::cout << tabelle[i][j][k];
}
std::cout << " ";
}
std::cout << std::endl;
}
}
int main() {
// 2D
int arr2D[4][2] = { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };
int (*pArr2D)[2] = arr2D;
ausgabe2D(pArr2D, 4);
// 3D
int arr3D[2][3][2] = { { { 1, 2 }, { 3, 4 }, { 5, 6 } }, { { 7, 8 }, { 9, 10 }, { 11, 12 } } };
int (*pArr3D)[3][2] = arr3D;
ausgabe3D(pArr3D, 2);
_getch();
}
Also vielen Dank nochmal euch beiden :xmas1:
PS: Gemerkt. Arrays sind Speicherbereiche und keine Zeiger auf deren Beginn. Durch den Aufruf des Namens vom Array erhalte ich einen Zeiger auf die derzeitige Position (unverändert am Anfang) des Speicherbereichs. Mit Zeigerarithmetik kann ich mich durch das Array arbeiten.