Was macht const struct
bedeuten? Ist es anders als struct
?
Wie unterscheidet sich ein ‘const struct’ von einem ‘struct’?
Manu
GrahamS
Das const
Teil bezieht sich wirklich auf die Variable, nicht auf die Struktur selbst.
zB @Andreas sagt richtig:
const struct {
int x;
int y;
} foo = {10, 20};
foo.x = 5; //Error
Aber das Wichtigste ist diese Variable foo
konstant ist, nicht die struct
Definition selbst. Das könnte man genauso schreiben:
struct apoint {
int x;
int y;
};
const struct apoint foo = {10, 20};
foo.x = 5; // Error
struct apoint bar = {10, 20};
bar.x = 5; // Okay
Andreas Brink
Es bedeutet die struct
ist konstant, dh Sie können seine Felder nicht bearbeiten, nachdem es initialisiert wurde.
const struct {
int x;
int y;
} foo = {10, 20};
foo.x = 5; //Error
BEARBEITEN: GrahamS weist zu Recht darauf hin, dass die Konstanz in diesem Fall eine Eigenschaft der Variablen ist foo
und nicht die Strukturdefinition:
struct Foo {
int x;
int y;
};
const struct Foo foo = {10, 20};
foo.x = 5; //Error
struct Foo baz = {10, 20};
baz.x = 5; //Ok
-
Prost. Kann ich für meine Beobachtung +1 bekommen? 😀
– GrahamS
24. November 2010 um 13:29 Uhr
‘const’, wie das Wort Konstante selbst anzeigt, bedeutet nicht modifizierbar. Dies kann auf Variablen beliebigen Datentyps angewendet werden. Da struct ein benutzerdefinierter Datentyp ist, gilt er auch für die Variablen jeder Struktur. Nach der Initialisierung kann der Wert der konstanten Variablen nicht geändert werden.
Const bedeutet Sie kann nicht bearbeiten das Feld der Struktur nach der Deklaration und Initialisierung und Sie kann Abrufen der Daten aus der Struktur
Sie können eine konstante Struktur nicht ändern, die erste Struktur ist ein einfacher Datentyp. Wenn also ein const-Schlüsselwort auftaucht, hält der Compiler einen Speicherplatz in einem Register und nicht in einem temporären Speicher (wie RAM) und Variablenbezeichnern, die gespeichert werden Register kann nicht geändert werden
-
Das ist falsch. Die Struktur wird nicht in einem Register gespeichert.
– msitt
27. April 2017 um 14:12 Uhr
-
Das ist falsch. Die Struktur wird nicht in einem Register gespeichert.
– msitt
27. April 2017 um 14:12 Uhr