Why this works? a and b has same ptr address but value differs?
#include <stdio.h>
int main()
{
const int a = 10;
int *b = (int *) &a;
*b = 20;
printf("addr=%d val=%d\n",&a,a); //addr=455682860 val=10
printf("addr=%d val=%d\n",b,*b); //addr=455682860 val=20
return 0;
}