char* als Rückgabewert einer Funktion
-
Dersichim C Buch verliest schrieb:
krass
nochmal zusammengefasst: eine funktion darf nicht die adresse eines ihrer lokalen objekte zurückliefern. das geht schief. andere adressen (heap, static, BSS, irgendwas berechnetes, etc.) aber schon.
-
-
Danke an alle.
Also mit der Version
main(){ char* nix; nix=foo(char **nix); } char* foo(char **nix){ char* tmp=nix; tmp="String"; return tmp; }
in etwa (habs nicht mehr genau im Kopf)gehts.......
Danke an alle !
-
Völlug falsch,
1. es sollte nix=foo(char &nix); heißen
2. foo macht irgendwie keinen Sinn, da kannst du gleich
char *foo(char **nix) { return "String"; }
schreiben.
-
supertux schrieb:
char *foo(char **nix) { return "String"; }
Das gleiche in Grün:
char *foo( void ) { return "String"; }
-
Warum nicht gleich char* nix = "string"; ? ^^
-
Eben.
-
einfachheit ftw schrieb:
Warum nicht gleich char* nix = "string"; ? ^^
bei diesem Beispiel schon, ich wollte aber verdeutlichen, dass die Funktion im Beispiel, so wie sie ist, falsch ist, weil ....