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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Max (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
2 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
Danke für eure Antworten!

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

Viele Grüße,

Max

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.