...
The only value that can be considered interchangeable between pointers and integers is the constant 0. Except in this case, conversions between integers and pointers can have undesired consequences depending on the implementation. According to the C standard, Section 6.3.2.3 [ISO/IEC 9899:2011],
An integer may be converted to any pointer type. Except as previously specified, the result is implementation-defined, might not be correctly aligned, might not point to an entity of the referenced type, and might be a trap representation.
...
CERT C++ Secure Coding Standard: INT11-CPP. Take care when converting from pointer to integer or integer to pointer
ISO/IEC 9899:2011 Section Section 6.3.2.3, "Pointers"
ISE/IEC TR 17961 (Draft) Converting a pointer to integer or integer to pointer [intptrconv]
...