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.
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|BB. Definitions#implementation]. According to C99 \[ [ISO/IEC 9899:1999|AA. Bibliography#ISO/IEC 9899-1999]\] Wiki Markup
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.
...
Tool | Version | Checker | Description | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
|
| ||||||||||||
|
|
|
|
...