antred
Lt. Commander
- Registriert
- Juni 2010
- Beiträge
- 1.288
Sculletto schrieb:@asdfman: so kann man das zwar machen, handelt sich damit aber das Problem ein, dass der Aufrufer der Funktion test() sich darum kömmern muss, den mit malloc() allokierten Speicher irgendwann wieder mit free() freizugeben. Die Lösung mittels Rückgabeparameter ist in der Hinsicht eleganter.
Oder du packst dein Array in ein struct und gibst eine Instanz davon zurück.
Code:
typedef struct
{
char array[ 200 ];
} ArrayStruct;
ArrayStruct giveMeAnArray( char inputArray[] )
{
ArrayStruct ret;
strcpy( ret.array, "Test" );
return ret;
}
Sorry für eventuelle Syntax-Fehler ... mein C ist ein bißchen rostig.
Ergänzung ()
Kelshan schrieb:Reines C brauchte ich noch nie und verwende den Begriff aus Gewohnheit daher äquivalent.
Solltest du dir schnellstmöglich wieder abgewöhnen.
Ergänzung ()
Jack159 schrieb:Code:#include<stdio.h> #include <string.h> char *test(char bla[]) { return "test"; } int main() { char *a = test("bla"); printf("%s", a); return 0; }
Meiner Meinung nach inkorrekt, da deine test()-Funktion ein String-Literal zurückgibt, welches vom Typ eigentlich const char* ist, und dann die constness einfach wegschmeißt.
EDIT: Sorry, DaZpoon hatte Letzteres ja bereits in seinem letzten Beitrag bemängelt.
Zuletzt bearbeitet: