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

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