Считайте *char_ptr++
как:
char tmp = *char_ptr;
char_ptr++;
c = toupper(tmp);
Таким образом, он эффективно выбирает текущий символ и перемещает указатель на единицу. Поскольку оператор ++
имеет более высокий приоритет, чем унарный *
, такое выражение оценивается в порядке *(char_ptr++)
.
Сначала применяется приращение, но поскольку оператор постфикса ++
возвращает результат до манипуляции, оператор разыменования *
применяется к старому адресу.
char_ptr--
просто уменьшает указатель на единицу.