int main()
{
    int a[3]={1,2,3};
    int *b;
    b=&a[10];
    printf("%u\n",b);
    printf("%d",*b);
}
I thought that the above program would give me an error as a is a collection of only 3 data items, and b=&a[10]; by this b stored the address of the 11th data member of a. But in place of error it gives the address of 11th data member.
Size of the array is 3 and but it can store the variables beyond of its size! so how does it possible?
 
     
    