Forum: PC-Programmierung static const ?


von fru3 (Gast)


Lesenswert?

Hi,
was macht die deklarierung: static const var ???

von Karl H. (kbuchegg)


Lesenswert?

Dem Namen nach:
 sie definiert eine Konstante (const) mit eingeschränkter Sichtbarkeit 
(static) oder einer anderen Lebensdauer (funktionslokales static / 
klassenlokales static)

Welches genau der Fall ist kann man nicht genau sagen, solange du nicht 
zeigst, wie und wo diese Definition vorkommt.

Auch kann man nicht sagen ob es sich um eine echte Konstante handelt 
oder nur um eine Variable, die vom Programm aus nicht verändert werden 
darf. Das hängt wiederrum davon ab, ob du C oder C++ programmierst.

Kann natürlich auch alles ganz anders sein, wenn du weder in C noch in 
C++ programmierst.

von imon (Gast)


Lesenswert?

Das Kommt drauf an (C),

static hat eine doppel Bedeutung eine Variable die innerhalb einer 
funktion static deklariert wird, behält Ihren wert ( und speicherplatz) 
auch wenn du die Funktion wieder verlassen hast.

eine globale Variable oder eine static Funktion bedeutet jedoch das die 
Variable oder Funktion nur innerhalb der Datei benutz werden kann.

mit den const sicherst du zu das sich der wert der Variablen nicht 
ändert innerhalb des Scopes der Variablen.

von Rolf Magnus (Gast)


Lesenswert?

imon schrieb:
> Das Kommt drauf an (C),
>
> static hat eine doppel Bedeutung

Und in C++ hat es noch eine dritte.

von fru3 (Gast)


Lesenswert?

Ist C.

von Peter (Gast)


Lesenswert?

>mit den const sicherst du zu das sich der wert der Variablen nicht
>ändert innerhalb des Scopes der Variablen.

Ausserhalb des Scopes ändert sich die Variable wohl auch nicht!

von Klaus W. (mfgkw)


Lesenswert?

Genau genommen sichert man mit const nur zu, daß man selbst über den 
Quelltext die Variable oder was auch immer nicht ändern möchte.
Ich bekomme i.d.R. einen Fehler, wenn ich es doch probiere.

Daß sie darüber hinaus auch anderweitig nicht geändert wird, kann der 
Compiler normalerweise getrost annehmen.

Allerdings schließt ein const nicht ein gleichzeitiges volatile aus.
Mit dem const sage ich wieder nur "ich ändere sie nicht", das volatile 
sagt "aber vielleicht jemand anderes".

=> const heißt nicht "konstant", sondern "ich ändere sie nicht hier im 
Quelltext (also im aktuellen scope)".

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.