Funktion return array
lima-city → Forum → Programmiersprachen → C/C++ und D
array
aussehen
beitrag
compiler
dan
definition
ebenfall
einstellung
element
fehler
funktion
mode
referenz
return
sen
speicher
test
variable
vielen faktoren
warnung
-
Als die ?berschrift sag es eigentlich schon. Ich m?chte das eine funktion ein array ausgibt, nur will das mein compiler irgendwie nicht...
es sollte wie folgt aussehen
char testfunktion()
\{
char test[]=\{'a','b'};
return test;
}
waf?r das ganze???
also ich habe ein multidimensionales array in einer funklion. die funktion soll hier eigentlich nur als kleine datenbank dienen...
jetzt gebe ich an welche arraygruppe zur?ckgegeben werden soll und m?chte das dan in eine variable schreiben...
char foo;
foo = testfunktion();
um dann ausgeben zu k?nnen
cout<<foo[1];
nur wie mach ich das jetzt, das die die funktion eben ein array ausgibt...
--TheUntouchables
PS: Lima zeigt geschweifte klammern nicht gescheit an. Ich habe \ ben?tzt da wo welche w?ren...
Beitrag ge?ndert am 10.07.2005 17:49 von theuntouchables -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Wegen der geschweiften Klammern hier mal schauen:
http://www.lima-city.de/boards.php?mode=thread&id=31837
Also erstmal ist deine Funktion testfunktion() schon mal falsch. Als R?ckgabewert hast du char angegeben, versuchst dann aber mit der Variablen test ein Array zur?ckzugeben. ?ndere das so ab:
char * testfunktion()
Weiterhin darf foo kein char sein, da es sonst keinen Zeiger auf ein char-Array aufnehmen kann. Du musst foo also ebenfalls als char * definieren.
Je nach Compiler und Einstellungen k?nnte es Fehler oder Warnungen geben wegen des Returnwertes von testfunktion. Sollte das so sein, kannst du das auf zwei Arten l?sen. Entweder einen typecast auf test zu char * w?hrend des returns machen oder einfach eine Variable test2 benutzen, die auf das erste Element des Arrays test zeigt (also auch wieder vom Typ char * ist).
Dann gibt es noch ein Problem: Du hast zwar test in der Funktion testfunktion() angelegt, aber nach der Definition von C darfst du nicht davon ausgehen, dass der zur?ckgelieferte Wert nach Beenden der Funktion noch auf g?ltigen Speicher zeigt. Bei so einem kleinen Programm wird das wohl der Fall sein, das ist aber von so vielen Faktoren abh?ngig, das man sich besser nicht darauf verlassen sollte. Daher solltest du die Variable test als static definieren.
Langer Text, kurzes Beispiel:
char * testfunktion()
{
static char test[]= {'a','b'};
return (char *) test;
}
char * foo;
foo = testfunktion();
cout << foo[1];
?brigens gibst du mit foo[1] das zweite Element aus dem Array aus (also "b"), nur falls dir das nicht klar sein sollte.
Beitrag ge?ndert am 10.07.2005 18:07 von 0-checka -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage