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;
}
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
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.
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.