I feel this might be a weird/stupid question, but here goes...
In the question Is NULL in C required/defined to be zero?, it has been established that the NULL
pointer points to an unaddressable memory location, and also that NULL
is 0
.
Now, supposedly a 32-bit processor can address 2^32
memory locations.
2^32
is only the number of distinct numbers that can be represented using 32
bits. Among those numbers is 0
. But since 0
, that is, NULL
, is supposed to point to nothing, shouldn't we say that a 32-bit processor can only address 2^32 - 1
memory locations (because the 0
is not supposed to be a valid address)?