c - Why is casting from int to void * allowed? -


why casting void* int , vice versa allowed in c? used other pthread?

it allowed, behavior implementation-defined.

sometimes, under situation (on particular platform/ architecture), provision may useful quick-and-dirty hacks/tricks involving memory addresses using operators needs int operands. [ex: xor operation]. can useful memory optimization limited-memory embedded devices.

to quote standard regarding functionality,

the mapping functions converting pointer integer or integer pointer intended consistent addressing structure of execution environment.

related reading: c11, chapter 6.3.2.3,

paragraph 5:

an integer may converted pointer type. except specified, result implementation-defined, might not correctly aligned, might not point entity of referenced type, , might trap representation.

and paragraph 6:

any pointer type may converted integer type. except specified, result implementation-defined. if result cannot represented in integer type, behavior undefined. result need not in range of values of integer type.