Duplicar posible:
Does the evil cast get trumped by the evil compiler?¿Cuál es el propósito del calificador const si puedo modificarlo a través de un puntero en C?
Hola,
Si puedo modificar una constante a través de un puntero, entonces ¿cuál es el propósito de la misma? A continuación se muestra el código:
#include <stdio.h>
#include <stdlib.h>
int main()
{
const int a = 10;
int *p = (int *)&a;
printf("Before: %d \n", a);
*p = 2;
/*a = 2; gives error*/
printf("After: %d \n", *p);
return 0;
}
SALIDA:
Antes: 10
Después: 2
Pulse cualquier tecla para continuar. . .
mediante Visual Studio 2008.
Ver [¿El malvado reparto es vencido por el malvado compilador?] (Http://stackoverflow.com/questions/712334/does-the-evil-cast-get-trumped-by-the-evil- compilador). Este es [comportamiento indefinido] (http://www.catb.org/jargon/html/N/nasal-demons.html). – ephemient
Ahora compilar con optimizaciones. – GManNickG