While it has been common practice to use integers and pointers interchangeably in C, pointer to integer and integer to pointer conversions are implementation-defined.
Wiki Markup |
---|
According to C99 \[[ISO/IEC 9899-1999|AA. C References#ISO/IEC 9899-1999]\], theThe only value that can be considered interchangeable between pointers and integers is the constant 0. Except in this case, conversions between integers and pointers may have undesired consequences depending on the [implementation|BB. Definitions#implementation]. According to C99 \[[ISO/IEC 9899-1999|AA. C References#ISO/IEC 9899-1999]\]: |
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.
...