itoa - warum char* itoa?

Gast #2796154
Lesenswert?

Hallo,

auf folgender Seite habe ich die itoa-Funktion nachgelesen:
http://www.cplusplus.com/reference/clibrary/cstdlib/itoa/

Warum ist die Funktion als
1
char *  itoa ( int value, char * str, int base );
 deklariert? Mit Rückgabewert?

Ich gebe doch *str als Eingangsparameter ein. D.h. die Funktion itoa 
speichert den String auf den Zeiger ab. Ein Rückgabewert ist somit gar 
nicht erforderlich. Man könnte sie auch als
1
void itoa
 deklarieren.

Ich habe itoa zur Übung auch mal selber geschrieben und als void 
deklariert.


Ich habe das schon öfters festgestellt, dass Funktionen einen Datentyp 
haben aber eigentlich nichts zurückgeben....


Wwas hat das für Vorteile?
#2796159
Lesenswert?

Mit einem Rückgabewert kannst du auf Fehler reagieren. Das macht zwar 
bei itoa vielleicht nicht so arg viel Sinn, aber wenn du beispielsweise 
den Fall konstruierst, dass du itoa mit base=0 aufrufst, dann könnte die 
Funktion NULL  zurückgeben und dir damit mitteilen, dass was schief 
gelaufen ist.

Gruß
Marius
Moderator #2796353
Lesenswert?

Stefan schrieb:
> Auch in if Ausrücken ist das praktisch:
>
> if (itoa(...)) {

Warum sollte man so etwas machen wollen? Die Funktion itoa liefert nur
dann 0 zurück, wenn auch der übergebene Char-Pointer 0 ist. Wenn dieser
Fall tatsächlich auftreten kann, sollte er schon vor dem Aufruf von itoa
abgefangen werden.

Der wahre Grund, warum itoa den übergebenen Pointer als Rückgabewert
liefert, wurde schon mehrfach genannt:

Man kann
1
  puts(itoa(n, str, base));

statt
1
  itoa(n, str, base);
2
  puts(str);

schreiben.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren