Kompilując ten sam kod korzystając z MinGW programami gcc oraz g++ uzysujemy różne efekty.
#include <stdio.h>
int main(void)
{
const int a = 1;
int * c = (int *) & a;
* c = 2;
printf("& a = %p; c = %p\n", & a, c);
printf("a = %d; * c = %d\n", a, * c);
return 0;
}
Przykładowy efekt dla C++:
& a = 0028FEE8; c = 0028FEE8
a = 1; * c = 2
I dla C:
& a = 0028FF18; c = 0028FF18
a = 2; * c = 2
Dlaczego tak się dzieje? Gdzie wartość spod wskaźnika c jest przechowywana? Przecież obydwa obiekty wskazują na ten sam obszar pamięci.