It's a technicality about the pointer type. You can cast the type away which typically doesn't change the actual value (but I'm pretty sure that causes undefined behavior)
For your example, int x = 0xDEADBEEF;
signifies the integer -559038737 (at least on x86.)
char *p = (char*)0xDEADBEEF;
on the other hand may or may not point to the real memory address 0xDEADBEEF, depending on factors like if the processor is using virtual or real addressing, etc
I love the implication that a "rational actor" would choose death over losing money