Normalerweise ist das kein Problem, aber es gibt Dinge zu beachten. Es ist normalerweise eine Frage der Korrektheit, was bedeutet, dass Sie im Auge behalten, was Sie ändern können und was nicht.
Wenn Sie eine Zeichenfolge mit doppelten Anführungszeichen zurückgeben, lautet sie const char *
. Wenn Sie sie wie alles andere behandeln, ist das eine Einladung zu Problemen. Das Ändern einer solchen Zeichenfolge ist ein nicht definiertes Verhalten, führt jedoch normalerweise zum Absturz des Programms oder zum Ändern der Zeichenfolge, unabhängig davon, auf was verwiesen wird.
Wenn Sie ein Zeichenarray auf dem Stapel zurückgeben (d. H. Die lokale Variable einer aufgerufenen Funktion), wird es verschwinden und der Zeiger wird auf nichts ausgerichtet sein, wahrscheinlich mit schlechten Ergebnissen zu einem bestimmten Zeitpunkt.
Wenn die aufgerufene Funktion etwas zurückgibt, das bereits const char *
ist, dann erfordert das Ändern auf char *
eine Umwandlung. Weiter, wenn Sie es wirklich ändern, müssen Sie sicher sein, dass es veränderbar ist. Es ist normalerweise viel besser, es als const char *
zu behalten.
Es gibt kein unmittelbares Problem mit Speicher mit malloc()
oder new
zugeordnet Rückkehr, aber Sie haben das Problem des Eigentums haben: Welche Funktion sollte free()
/delete
es, wann und was tun Sie über mögliche Kopien? Hier leuchten C++ Smartpointer.
main() sollte immer int zurückgeben! http://users.aber.ac.uk/auj/voidmain.shtml – nmuntz