постфикс ++
имеет более высокий приоритет, чем *
, компилятор читает *p++
как *(p++)
. Поскольку вы хотите увеличить значение *p
, вам нужны фигурные скобки: (*p)++
вернет значение *p
, а затем увеличит значение p
на единицу. ++(*p)
увеличит значение *p
и вернет это значение.
Возможно, вы опустите скобки для последнего случая и напишите ++*p
, но я бы посоветовал этого не делать, потому что ++(*p)
является двойственным к (*p)++
, но для ++*p
это не *p++
.