Forum: PC-Programmierung strlen(const char *s) - warum const?


von Max (Gast)


Lesenswert?

Hallo Leute - ich hoffe meine Frage ist nicht allzu blöd, aber mich 
würde interessieren was der Grund ist, warum in den Funktionen der 
string Library beispielsweise bei der Funktion strlen(const char *s) der 
pointer als const deklariert ist?

Wenn der Übergabeparameter kein const ist gibt es ja eine Warnung, 
welche man mittels typecast verhindern kann - aber warum ist das so?

Danke und viele Grüße,

Max

von Felix U. (ubfx)


Lesenswert?

Weil strlen den übergebenen String nicht ändert. Bei strcpy ist zum 
Beispiel das Ziel nicht const, die Quelle schon.

Zu const casten geht immer (etwas das du verändern darfst, darfst du 
auch nicht verändern), umgekehrt nicht.

: Bearbeitet durch User
von Zombie (Gast)


Lesenswert?

Max schrieb:
> warum [...] der
> pointer als const deklariert ist?
Nicht der Pointer ist const, der/die char ist es.

Max schrieb:
> Wenn der Übergabeparameter kein const ist gibt es ja eine Warnung
"Das glaub ich nicht, Tim."

von Max (Gast)


Lesenswert?

Danke für eure Antworten!

@Zombie: du hast recht - die Warnung entstand weil ich einen unsigned 
char* übergeben habe.

Viele Grüße,

Max

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.