Warum zwei const in Funktionsdeklaration?

OP #445616
Lesenswert?
• ▲
▼
Hi, habe folgenden Funktionskopf:

int getc_count( const char * const path, size_t * const result );
[Funktion soll ne Dateigröße ermitteln]
von: http://userpage.fu-berlin.de/~ram/pub/pub_jf47ht7Ht/c_faq_de


Was ich nicht verstehe, warum ein const mehr?
Was ist der Unterschied zwischen:

const char * const path

und

const char * path

?
Gast #445621
Lesenswert?
• ▲
▼
1
const char * path
ist ein Zeiger auf eine Konstante, während
1
const char * const path
ein konstanter Zeiger auf eine Konstante ist.

Im ersten Fall ist also der Zeiger selbst nicht konstant, sondern nur 
der Wert, auf den er zeigt.
OP #445622
Lesenswert?
• ▲
▼
Bin ich vielleicht gerad drauf gekommen?

Wird das so zerlegt?
const char * const path

const char * ---> Pointer, der KONSTANT nur auf eine Adresse zeigen darf 
(keine andere Ausrichtung möglich)
const path ---> in path darf der referenzierte String nicht geändert 
werden?
OP #445623
Lesenswert?
• ▲
▼
johnny.m wrote:
>
1
> const char * path
2
>
> ist ein Zeiger auf eine Konstante, während
>
1
> const char * const path
2
>
> ein konstanter Zeiger auf eine Konstante ist.
>
> Im ersten Fall ist also der Zeiger selbst nicht konstant, sondern nur
> der Wert, auf den er zeigt.

Danke, johnny.m, hatte ich also doch nicht richtig rum gedacht :)
Gast #445701
Lesenswert?
• ▲
▼
Faustregel: C-Deklarationen von hinten lesen, dann versteht man sie. 
Also wird im ganzen Satz aus "const char * const path":
path ist ein konstanter Pointer, der auf einen char zeigt, welcher 
konstant ist.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.