int main() { int x[3]; int *y; int z; y = x; // OK, because there's an implict conversion from int[] to int* x = y; // ERROR z = *x; // Doesn't cause a crash z = *y; // Crash if y doesn't point to anything y++; // OK, you can increment a pointer x++; // ERROR, you can't do so to an array. }