web-dev-qa-db-fra.com

En quoi une "const struct" diffère-t-elle d'une "struct"?

Que signifie const struct? Est-ce différent de struct

38
Manu

La partie const s'applique réellement à la variable, pas à la structure elle-même.

par exemple. @Andreas dit correctement:

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

Mais l’important est que la variable foo soit constante et non la définition struct elle-même. Vous pouvez également écrire cela comme suit:

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

Cela signifie que la struct est constante, c'est-à-dire que vous ne pouvez pas modifier ses champs après son initialisation.

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

EDIT: GrahamS souligne correctement que la constness est une propriété de la variable, dans ce cas foo, et non la définition de struct:

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

Je crois qu'une const structure ne peut pas être modifiée. En d'autres termes, tous les champs d'une structure déclarée const sont non modifiables.

0
Nick

Const signifie que vous ne pouvez pas éditer le champ de la structure après la déclaration et l'initialisation et que vous pouvez récupérer les données de la structure 

0
Sudantha

'const' comme la constante du mot l'indique elle-même signifie non modifiable. Ceci peut être appliqué à une variable de n'importe quel type de données. struct étant un type de données défini par l'utilisateur, il s'applique également aux variables de toute struct. Une fois initialisée, la valeur des variables const ne peut plus être modifiée.

0
Jay