Rückgabewert einer char Prozedur
-
Heisst's jetzt Prozedur oder Funktion, naja ich schreib mal auf was ich meine:
char *Funktionsprocedur(void){ char *zurueck; : : : return zurueck; }
Abgesehen, daß ich jetzt nicht weiß wie man's nennt, hier die eigentliche für mich wichtige Frage: kann man irgendwie nicht nur einen Pointer auf char sondern ein array z.B. zurueck[128] zurückgeben? Ich hab mir gedacht es könnte so aussehen:
char *Funktionsprocedur(zurueck[128]){ : : : return zurueck; }
Es scheint auch zu laufen der Compiler meckert nicht. Also kann man das so schreiben?
-
Ja, das würde schon passen.
Wenn du nur einen char zurückgeben würdest, dann nicht.Aber da du ja einen char* zurückgibs, kannst du also ein char[] oder einen char* zurückgeben.
Wichtig wäre halt, dass du dir die Größe merkst.
-
Wenn du nur einen char zurückgeben würdest, dann nicht.
Wie ist das gemeint, wenn "zurueck" jetzt nach der Abarbeitung der Funktion nur einen char enthält geht's nicht, aber ansonsten schon? Versteh ich jetzt nicht? Warum?
-
Gegenfrage: Was passiert während der Arbeit mit "zurueck"? Und wie genau sieht die Fehlermeldung aus, die von deinem Compiler ankommt?
(denn theoretisch sollte das so funktionieren, wie du dir das denkst)
-
Ähm ich bekomme keine Fehlermeldung vom Compiler, der Code scheint auch soweit zu laufen, in der aufgerufenen Prozedur passiert mit "zurueck" garnichts, das "zurueck" ist nur drinnen um es als Rückgabewert zu verwenden, denn ansonsten müsste ich ja einen Pointer auf char in der Prozedur deklariren, was ich aber vermeiden wollte. Ich wollte nur sichergehen, daß der Code so richtig ist, deshalb die Frage, hab ja schon öfters was compiliert ohne Fehlermeldung, aber dann liefs doch nicht.
-
OK, dann so: Ja, der Code ist so richtig (übrigens reicht es aus, wenn du einen "char* zurueck" als Parameter übernimmst - du mußt nur wissen, wieviel Platz du dahinter hast).
-
Bitte ein Byte schrieb:
...kann man irgendwie nicht nur einen Pointer auf char sondern ein array z.B. zurueck[128] zurückgeben? Ich hab mir gedacht es könnte so aussehen:
char *Funktionsprocedur(zurueck[128]){ : : : return zurueck; }
Es scheint auch zu laufen der Compiler meckert nicht. Also kann man das so schreiben?
bei diesem beispiel gibst du kein array zurück sondern reichst auch nur einen pointer durch.
sowas wie:int function(void)[128] { int x[128]; ... ... ... return x; }
mag c leider nicht. man kann c aber überlisten indem man das array als eine struct verkleidet:
struct array { char a[128]; }; struct array function (void) { struct array x; ... ... ... return x; }