*p++
Для этого ++
имеет более высокий приоритет, чем *
, поэтому он увеличивает указатель на единицу, но извлекает значение в исходном местоположении, поскольку постинкремент возвращает указатель, а затем увеличивает его значение.
(*p)++
Это вызывает приоритет в другом направлении, поэтому сначала на указатель ссылаются, а затем значение в этом месте увеличивается на единицу (но возвращается значение в исходном месте указателя).
*(p++)
Этот объект увеличивает указатель первым, поэтому он действует так же, как и первый.
Важно отметить, что на величину увеличения указателя влияет тип указателя. По предоставленной вами ссылке:
char *mychar;
short *myshort;
long *mylong;
char
имеет длину один байт, поэтому ++
увеличивает указатель на 1 (поскольку указатели указывают на начало каждого байта).
short
имеет длину два байта, поэтому ++
увеличивает указатель на 2, чтобы указывать на начало следующего короткого, а не на начало следующего байта.
long
имеет длину четыре байта, поэтому ++
увеличивает указатель на 4.