Cast between a pointer to object type and a different pointer to object type.
Conversions of this type may be invalid if the new pointer type requires a stricter alignment.
Example
uint8_t * p1;
uint32_t * p2;
p2 = (uint32_t *)p1; /* Incompatible alignment ? */