int* pointless = 0;
pointless = 0x0000; // address, not value
int rabbit = *pointless;
A) Something that is pointless doesn't point anywhere, unlike your pointer, which points to memory address zero.
B) You set pointless twice. It's double-pointed to zero.
C) Rabbit is still undefined, unless there's memory at address zero. A couple of years ago, I worked on an embedded system with a tiny heap and a bugged malloc()/free() system that could return zero without intending to indicate failure.