Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Rückgabe mehrdimensionale Felder



klaus1
03-05-2007, 13:06
Hi!

Kann mir jemand einen Prototyp liefern für den rückgabewert eines zweidimensionalen Arrays?

Das hier klappt nicht:

float rueck[][] sinusberechnen(float feld[][SPALTEN],int zeilen);


Klappt das nur über Pointer?
Danke,
Klaus

RHBaum
03-05-2007, 13:37
ja, denn wie man als C Programmierer gelernt haben sollte, werden arraydefinitionen sobald sie irgendwie als parameter verwendet werden, zum Typ zeiger auf Arraytyp gewandelt.

dein compiler macht also aus deinem prototyp ein:

float * sinusberechnen(float * feld, int zeilen);

Er kann einfach die groessenangabe mit in den Typ qualifizieren.

in C gibt man soweis kaum komlexere elemnte als rueckgabe zurueck.
weil den rueckgabewert reserviert man lieber fuern fehlercode, komplexere typen gehn prinzipiell nicht. Und erst recht keine Arrays, weil ein array erzeugen und ausserhalb des Contextes von irgendwem loeschen lassen, ist mega graessliches Design , nicht nur in C !
besser: den aufrufer das array erzeugen lassen und die funktion selber schreibt die daten nur ins array

int sinusberechnen(float * Source, size_t SourceSize, float * target, size_t * targetsize);

waer vielleicht nen kandidat !

Ciao ...