Archiv verlassen und diese Seite im Standarddesign anzeigen : Arrays an Funktionen übergeben
Poseidonius
17-03-2005, 12:56
Hallo zusammen,
ich möchte verschiedene multidimensionale Arrays an eine Funktion übergeben. Ich habe also zum Beispiel die Matrix
double A [2][2]
und möchte diese der Funktion
void tralla(double **A)
übergeben. Dabei dachte ich, ich könnte den Aufruf wie folgt aussehen lassen
tralla(& A);
Das geht so einfach aber nicht. Da ich keine Lust habe die Matrizen zu zerlegen und in Einzelteilen zu übergeben, hoffe ich auf eure Tipps.
Danke
tralla(A)Jedoch muss tralla irgendwie wissen, welche Dimension die Matrix hat. Woher soll es sonst wissen, dass A[0] und A[1] richtige double* sind, A[2] jedoch nicht mehr.
Edit:Die Funktion selbst sollte auch mit
double tralla(double M[][])definiert sein.
peschmae
17-03-2005, 15:08
Allerdings musst du dann noch die Grösse des Arrays übergeben und dann mit Pointern arbeiten. Nicht sehr nett leider (ausser eine Dimension des Arrays ist schon zur Compile-time bekannt, dann kannst du das natürlich im Methodenkopf hinschreiben).
MfG Peschmä
locus vivendi
17-03-2005, 16:25
Nunja, abgesehen davon das es mehrdimensionale Arrays in C und C++ (streng betrachtet) nicht gibt, kannst du ein Array als Referenz übergeben. Natürlich nur in C++. Das sieht dann ungefähr so aus:
void somefunction(int (&ref_array)[99]);
Wenn deine Arrays unterschiedliche Größen haben kannst du das recht einfach mit Hilfe eines Templates lösen. Allerdings schließe ich mich den Vorpostern an: Das Arrays "normal" als Pointer zu übergeben und die Dimensionen explizit dazu halte ich für vorteilhafter.
Nunja, abgesehen davon das es mehrdimensionale Arrays in C und C++ (streng betrachtet) nicht gibt, kannst du ein Array als Referenz übergeben. Natürlich nur in C++. Das sieht dann ungefähr so aus:
void somefunction(int (&ref_array)[99]);
Wenn deine Arrays unterschiedliche Größen haben kannst du das recht einfach mit Hilfe eines Templates lösen. Allerdings schließe ich mich den Vorpostern an: Das Arrays "normal" als Pointer zu übergeben und die Dimensionen explizit dazu halte ich für vorteilhafter.
Die Idee mit dem Template find ich aber trotzdem cool! ;)
locus vivendi
17-03-2005, 20:28
Die Idee mit dem Template find ich aber trotzdem cool!
Ich auch. Die Idee ist allerdings nicht meine, ich hab sie vielmehr vor einiger Zeit mal irgendwo aufgeschnappt.
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.