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;
i
El 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?