The standard specifies no details about the representation of pointer
types. Certain pointer types are supposed to have the same
representation as other types, and that's about it. That leaves open the
possibility that the piece of memory pointed at by a pointer containing
a given bit pattern could be time dependent; and in particular, that the
bit pattern might cease to validly represent any memory location. This
is not an abstract possibility, but something that comes up with real
world systems. A pointer can refer to a block of memory that was
available during the lifetime of the object it pointed at, but which was
allowed to become unavailable once that lifetime ended. 6.2.4p1 is what
allows an implementation of C to be fully conforming, despite making use
of that feature.
You talked about computing a value that has recently become
indeterminate, presumably by reason of violating 6.2.4p1. You can't do
that, at least not with behavior that would otherwise be well-defined.
Any attempt to compute such a value has undefined behavior before it
could even qualify as a value that would otherwise violate 6.2.4p1.
You might think you could take a pointer 'p' that points into the
allocated block of memory, and compute 'p+n', where n is an integer
value that leaves the pointer still pointing inside that block. However,
just loading the value of 'p' violates 6.2.4p1, even before you get a
chance to add 'n'. You might think you could take a pointer 'q' that
points somewhere outside of that block, and add an integer value 'm' to
it, such that 'q+m' points into that block. However, all such
calculations run afoul of 6.5.6p8, before the result even has a chance
of qualifying as a violation of 6.2.4p1. The same is true, for several
other different reasons, for any other way of calculating such a
pointer. The only thing that makes it permissible for such calculations
to generate a pointer that might point inside the deallocated block of
memory is the fact that the calculation itself has undefined behavior.