final - wie in JAVA?

Gast #1084904
Lesenswert?

> ich kenn das Stichwort "final" aus Java. Gibts so was i C auch?

In welchem Zusammenhang? Konstantendefinition per "static final"? 
Nichtüberschreibbare Methode? Lokale Konstante? Dieses Schlüsselwort hat 
je nach Kontext völlig andere Bedeutung.
Gast #1085123
Lesenswert?

> ich meinte nicht überschreibbare Konstante. Wenns das nicht gibt - auch ok.

Klar gibt es das in C. Sogar auf zwei Arten (ich erkläre es jetzt für 
den Typ "int"):
1
const int x = 23;

Legt eine "Variable" namens x an, die den Wert 23 enthält und nicht 
(oder nicht ohne implementierungs-spezifische Tricks) überschrieben 
werden kann. Das entspricht am ehesten "final".

Daneben gibt es eine zweite Möglichkeit, da eine const-Variable in 
gewisser Hinsicht immer noch als Variable behandelt wird - z.B. kann man 
in Standard-C den Variablenwert nicht für Arraygrößen verwenden, da es 
ja eine Variable ist und für Arraygrößen nur Konstante Ausdrücke 
zugelassen werden. Ganz einsichtig ist das nicht, aber so ist es eben. 
Deshalb gibt es die Möglichkeit, über den Präprozessor ein Macro zu 
definieren:
1
#define x 23

Diese Variante ist wenig mehr als eine Textersetzung x->23 und 
funktioniert deshalb auch für Arraygrößen. ("wenig mehr" bedeutet hier, 
dass der Buchstabe x z.B. nur ersetzt wird, wenn er nicht Teil eines 
längeren Bezeichners ist, so wie in "extremwert"). Dann gibt es aber 
keine Variable mehr von der man z.B. die Adresse berechnen könnte.

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