cambio de valor constante en C

Me parece que en el siguiente fragmento de código

const int i = 2;  
const int* ptr1= &i;  
int* ptr2 = (int*)ptr1;  
*ptr2 =3;

iEl valor de cambia a 3. Lo que me gustaría saber es por qué está permitido. ¿Cuáles son las situaciones en las que esto podría ser útil?

Respuestas a la pregunta(9)

Su respuesta a la pregunta