Wie unterscheidet sich ein ‘const struct’ von einem ‘struct’?

Lesezeit: 2 Minuten

Benutzeravatar von Manu
Manu

Was macht const struct bedeuten? Ist es anders als struct?

Benutzeravatar von GrahamS
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

Benutzeravatar von Andreas Brinck
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 foound 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

1413620cookie-checkWie unterscheidet sich ein ‘const struct’ von einem ‘struct’?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy