Guten Tag,
Ich muss eine 3D Array mit Hilfe von Pointern an eine Funktion übergeben. Kann mir bitte jemand ein kleines Beispiel dazu geben damit ich sehe wie so was geht?
Vielen Dank im Vorraus…
Guten Tag,
Ich muss eine 3D Array mit Hilfe von Pointern an eine Funktion übergeben. Kann mir bitte jemand ein kleines Beispiel dazu geben damit ich sehe wie so was geht?
Vielen Dank im Vorraus…
Hallo senahamdi
Ich muss eine 3D Array mit Hilfe von Pointern an eine Funktion
übergeben.
Ein Array, sei es auch eines mit N Dimensionen, ist letztlich nur ein einfaches Array im Speicher. Da genügt der eine Zeiger, um das zu übergeben (genau wie bei einem 1D-Array), eventuell mit Offset, wenn ein Element weiter hinten gefragt ist, also sinngemaess:
„lang * breit + Offset für das einzelne Element“.
Kann mir bitte jemand ein kleines Beispiel dazu
geben damit ich sehe wie so was geht?
Können schon. Ich finde nun aber, Du könntest es wenigtens mal versuchen. Wenn es dann nicht klappt, kannst Du gerne den Quelltext hier einstellen (mit PRE-Marken), dann schauen wir uns das an. Wünsche gutes Gelingen!
lG
Martin B
Danke für die Antwort.
Was ich die ganze Zeit versuche ist folgendes, aber ich habe so keinen zugriff auf die array (wenn ich den pointer verwende) in der funktion und weis nicht wie weiter:
int main()
{void ausgabe(int arr[2][3][4],int, int , int);
int arr[2][3][4]={0};
ausgabe (arr,2,3,4);
…
}
void ausgabe(int (*arr)[3][4], int ii, int jj, int kk )
{cout
Hallo senahamdi
Ich habe jetzt das hier, klappt soweit bei mir. Im Prototyp würde ich immer Zeiger deklarieren:
#include
#include // nur fuer getch()
using namespace std;
//Prototyp muss im globalen Bereich sein:
// void ausgabe(int arr[2][3][4],int, int , int);
// besser so:
void eingabe (int \*arr, int kk, int jj, int ii);
void ausgabe (int \*arr, int kk, int jj, int ii);
int main()
{
// Aha: 2 Tabellen mit je 3 Zeilen und je 4 Elementen, gut.
int arr[2][3][4] = {0};
eingabe ((int \*)arr,2,3,4);
ausgabe ((int \*)arr,2,3,4);
getch();
return 0;
}
void eingabe(int \*arr, int kk, int jj, int ii)
{
cout
Am besten geht man hierarchisch vor, so wie "Jahr - Monat - Tag", hier also
"Tabelle - Zeile - Element", 'k' ist also für jede Tabelle, 'j' für jede Zeile dort.
Ich hatte auch dieses,
arr[k][j][i] = ...
was ja grundsätzlich auch dereferenziert, nahm er aber nicht (C++ - Compiler), weiss nicht warum.
> Bin für jeden Ratschlag sehr Dankbar...
Bitte gerne!
lG
Martin B
Vielen Dank Nochmal !!