Why is p [i] equivalent to * (p + i) and not * (p + i * sizeof (int))?
Because some processor architectures cannot dereference a pointer that does not point to an address that is aligned in size with its type. This means that a pointer to a 4 byte integer should always point to an address that is a multiple of 4.
When a program tries to dereference an invalid pointer, it can cause a "Bus" error. You can learn more about this here on Wikipedia .
, , p + 1 . , p++ , char. , * sizeof(*p), .
, , , .