Funktion mit Array als Rückgabewert in C

Hallo,

ich möchte eine Funktion schreiben, welche ein 2dim-Array als Ein- und Ausgabe hat). Wie mache ich das?

etwa so:

float funktion[2][2](float eingabe[2][2])

oder so:

float funktion(float eingabe[2][2])[2][2]

Ich bin für jede Hilfe Dankbar!

Viele Grüße,
Michl

Hallo,

ich möchte eine Funktion schreiben, welche ein 2dim-Array als
Ein- und Ausgabe hat). Wie mache ich das?

etwa so:

float funktion[2][2](float eingabe[2][2])

oder so:

float funktion(float eingabe[2][2])[2][2]

Ich würde mal sagen eher so

float[2][2] funktion(float eingabe[2][2])

falls das geht bin mir ned sicher sonst

float** funktion (float** eingabe)

Eher das zweite. Und man muss sich der Dimensionen sehr sicher sein. Ansonsten eine struct bauen mit erster Dimension, zweiter Dimension, float zahlen[dim1*dim2], float *zeilen[dim1]. Und dann Zeiger auf diese struct uebergeben.

Ciao Lutz

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi, vielleicht hilft folgendes:

typedef int MATRIX2D[4][4];

void funct(MATRIX2D* const p_m);

void main(void)
{
MATRIX2D m={11,12,13,14,21,22,23,24,31,32,33,34,41,42,43,44};
funct(&m);
}

void funct(MATRIX2D* const pMat)
{
(*pMat)[0][0]=6;
}

Gruss Moriarty

Hallo,

Mehrdimensionale Felder uebergibt man immer so, dass eine Dimension unspezifiziert bleibt, alle anderen muessen explizit angegeben werden. Wenn man vorher noch nicht weiss wie das Feld definiert ist, muss man mit einem Doppelpointer arbeiten und die Dimensionen uebergeben.

void function(int array[3][]){}
/\* am besten man uebergibt auch noch die andere dimension als 
bekannt ist. Dass man immer alle dimensionen ausser einer 
angeben muss ist logisch, da man sonst nicht auf beliebige 
Elemente zugreifen koennte, dazu muss man sich die 
Repraesentation von Feldern im Speicher ins Gedaechtnis 
zurueckrufen\*/

Felder gibt man normalerweise nicht zurueck, denn wenn sie in der Funktion erzeugt wurden, so sind sie aussen nicht mehr gueltig (man kann allerdings einen Pointer auf ein in der Funktion mit new erzeugtes Feld zurueckgeben). Wenn das Feld nicht auf dem Heap sein soll, so erzeugt man es am besten ausserhalb, und uebergibt es, damit die Funktion es fuellen kann.

Gruss Ben