2D Arrays als Rückgabewert

Hallo,

ich weis dies ist ein oft discutiertes Thema und ich hab auch schon einige post dazu im Internet/hier gefunden Die haben mir aber meine Frage nicht beantwortet.

Es geht um folgendes:
Ich habe eine Funktio:

double * getP_Coord () {return *P_Coord;}

So P_Coord ist ein 2D Array.
Was ich jetzt nöchte ist, das ich die Werte des Arrays auslesen kann.
Muss ich dazu ein struct anlegen, oder einen Operator überladne damit ich das kann oder gehts irgendwie anders.

Wenn ich diese Funktion einfach aufrufe und ausgeben, kommt ja nur die Adresse bzw. der erste Wert des Arrays heraus.

Ich habe gelesen, das Probelm ist die Dimension des Arrays. Bei 1D Arrays wäre es einfacher.

Meine Lösung wäre ohne Zeige zu arbeiten und quasi eine getFkt mit 2 Parametern zu erstellen, die der Position an im Array angeben und den Wert zurückgeben.

Ist das die einfachste Lösung oder, gibt es noch eine elegantere?

Vielen Dank für eure Hilfe!

Hallo,

double * getP_Coord () {return *P_Coord;}

So P_Coord ist ein 2D Array.

Nein, das ist ein Pointer.

Das Problem ist, dass C und C++ keine „echten“ Arrays kennen, sondern nur Pointer, die auf Speicher zeigen.
Wenn du ein 2D-Array haben willst, hast du zwei Möglichkeiten:

  1. du nimmst ein eindimensionales Array der Größe mx * my (mx: größe in X-Richtung; my: Größe in Y-Richtung) und machst den Zugriff via
    array[mx * y + x]
  2. Du speicherst ein Array von Arrays. Das macht allerdings das initialisieren hässlich.

bei 1) musst du immer eine Dimension (in dem Fall mx) zustäzlich speichern.

Du kannst das ganze natürlich auch objektorientiert machen.

Ist das die einfachste Lösung oder, gibt es noch eine
elegantere?

Das hängt davon ab, wofür du die Arrays brauchst.

Grüße,
Moritz

Hallo,

Es geht um folgendes:
Ich habe eine Funktio:

double * getP_Coord () {return *P_Coord;}

So P_Coord ist ein 2D Array.
Was ich jetzt nöchte ist, das ich die Werte des Arrays
auslesen kann.
Muss ich dazu ein struct anlegen, oder einen Operator
überladne damit ich das kann oder gehts irgendwie anders.

Wenn ich diese Funktion einfach aufrufe und ausgeben, kommt ja
nur die Adresse bzw. der erste Wert des Arrays heraus.

Ich habe gelesen, das Probelm ist die Dimension des Arrays.
Bei 1D Arrays wäre es einfacher.

Es ist auch bei 2D Arrays möglich (wenn auch
nicht sehr verbreitet). Was man genau macht,
hängt davon ab, *wie* Dein Array P_Coord denn
konkret aussieht.

Um welche Dimensionen handelt es sich denn konkret?
Was willst Du machen? Kannst Du einige Beispiele
skizzieren, was Du erreichen willst?

Muß es ‚blankes C‘ sein oder gehen auch einige
C+±Eigenschaften (das erleichtert einiges).

Meine Lösung wäre ohne Zeige zu arbeiten und quasi eine getFkt
mit 2 Parametern zu erstellen, die der Position an im Array
angeben und den Wert zurückgeben.
Ist das die einfachste Lösung oder, gibt es noch eine
elegantere?

Diese Erläuterung sagt mir nix so lange ich
nicht weiß, was Du übehaupt vorhast :wink:

Resumé: man überlegt sich, wie man
es *am liebsten* haben würde (wie es am
schänsten aussehen würde) - ohne Rücksicht
auf technische Gegebenheiten - und versucht
das dann zu implementieren …

Grüße

CMБ