Forum: Mikrocontroller und Digitale Elektronik Warum zwei const in Funktionsdeklaration?


von X. H. (shadow0815)


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

?

von johnny.m (Gast)


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.

von X. H. (shadow0815)


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?

von X. H. (shadow0815)


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 :)

von Jörg (Gast)


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.

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.