Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : return char



Romanday
03-02-2004, 10:22
Ist es überhaupt möglich innerhalb einer Funktion eine lokale Funktionsvariable (char)
mit return zurückzugeben?

erhalte immer folgende Fehlermeldung.
warning: address of local variable `tag' returned



char * mystring(){
char tag[]="Dienstag";
return tag;
}

int main(int argc, char *argv[]) {
mystring();
return 0;
}

wraith
03-02-2004, 10:42
Es ist möglich,aber nicht so ;)
Ok.


char * mystring(){
return "Dienstag";
}

oder


char * mystring(){
static char tag[]="Dienstag";
return tag;
}

oder


char * mystring(){
char *tag = malloc(strlen("Dienstag") + 1);
strcpy(tag,"Dienstag");
return tag;
}
...
Dann free nicht vergessen

Boron
03-02-2004, 11:06
Das Problem bei deiner Variante, Romanday, ist, dass der String "tag" in der Funktion mystring nur lokal, also nur innerhalb der Funktion, gültig ist.
Sobald die Funktion beendet wird, wird auch der String gelöscht.

Der Compiler macht alles richtig, warnt dich aber davor, dass das wahrscheinlich nicht das ist was du erwartest.

Romanday
03-02-2004, 17:18
Original geschrieben von Boron
Das Problem bei deiner Variante, Romanday, ist, dass der String "tag" in der Funktion mystring nur lokal, also nur innerhalb der Funktion, gültig ist.
Sobald die Funktion beendet wird, wird auch der String gelöscht.

Danke, ihr habt mir sehr geholfen.