webentwicklung-frage-antwort-db.com.de

Wie unterscheidet sich eine 'const struct' von einer 'struct'?

Was bedeutet const struct? Unterscheidet es sich von struct

38
Manu

Der const-Teil gilt wirklich für die Variable, nicht für die Struktur selbst.

z.B. @Andreas sagt richtig:

const struct {
    int x;
    int y;
} foo = {10, 20};
foo.x = 5; //Error

Das Wichtigste ist jedoch, dass die Variable foo konstant ist, nicht die struct-Definition selbst. Sie könnten das genauso schreiben als:

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
68
GrahamS

Die Variable struct ist konstant, d. H. Sie können die Felder nach der Initialisierung nicht bearbeiten.

const struct {
    int x;
    int y;
} foo = {10, 20};
foo.x = 5; //Error

EDIT: GrahamS weist korrekt darauf hin, dass die Konstante eine Eigenschaft der Variablen ist, in diesem Fall foo, und nicht die struct-Definition:

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
21
Andreas Brinck

Ich glaube, dass eine const-Struktur nicht modifiziert werden kann. Mit anderen Worten, alle Felder einer Struktur, die als const deklariert ist, können nicht geändert werden.

0
Nick

Const bedeutet, dass Sie können nicht bearbeiten das Feld der Struktur nach der Deklaration und Initialisierung und can die Daten aus der Struktur abrufen 

0
Sudantha

'const', wie die Wortkonstante selbst anzeigt, bedeutet nicht änderbar. Dies kann auf Variablen eines beliebigen Datentyps angewendet werden. Da struct ein benutzerdefinierter Datentyp ist, gilt es auch für die Variablen einer beliebigen Struktur. Nach der Initialisierung kann der Wert der const-Variablen nicht mehr geändert werden.

0
Jay