2010-11-24 24 views

Respuesta

57

La parte const se aplica realmente a la variable, no a la estructura en sí.

p. Ej. @Andreas correctamente dice:

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

Pero lo importante es que la variable foo es constante, no la definición struct sí. Es igualmente podría escribir que a medida:

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 
17

Significa que el struct es constante, es decir, no puede editar sus campos después de que se haya inicializado.

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

EDIT: GRAHAMS señala correctamente que la constness es una propiedad de la variable, en este caso foo, y no la definición 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 
+5

Saludos. ¿Puedo obtener un +1 por mi observación? : D – GrahamS

+0

Claro, aquí tienes;) –

-1

creo que una estructura const no puede ser modificado. En otras palabras, todos los campos de una estructura que se declara const no son modificables.

+4

¿Qué significa "creo"? No conteste si no está calificado. Deja las suposiciones para comentarios, ¿no? – nbro

0

Const significa que no se puede editar el campo de la estructura después de la declaración y la inicialización y puede recuperar los datos forman la estructura

0

'const' como la constante de la palabra lo indica significa inmodificable. Esto se puede aplicar a la variable de cualquier tipo de datos. struct es un tipo de datos definido por el usuario, se aplica a las variables de cualquier estructura también. Una vez inicializado, el valor de las variables const no se puede modificar.

-1

no se puede modificar una estructura constante, primera estructura es un tipo de dato simple por lo que cuando una palabra clave const se enciende, el compilador se celebró un espacio de memoria en un registro en vez que el almacenamiento temporal (como RAM), y los identificadores de variables que se almacenan en el registro no se pueden modificar

+2

Esto es incorrecto. La estructura no está almacenada en un registro. – msitt

Cuestiones relacionadas