Так что я новичок в C и проверил некоторые вещи с указателями, и у меня есть вопрос по поводу следующего printf:
char txt[] = "thisIsAQuestion";
char *ptr = &txt[9];
printf("%c\n", ++(*ptr));
printf("%c\n", *ptr);
Итак, следуя моим «знаниям», это будет выглядеть примерно так:
Указатель указывает на значение «е».
Затем, если я выполню первый printf, первым делом будет команда, которая находится в (), так что разыменование указателя * ptr, потому что оно имеет более высокий приоритет по сравнению с инкрементом префикса. Теперь я думаю, что ++ будет действовать как (* ptr + 1), потому что указатель уже разыменован, и увеличивает значение, на которое указывает указатель, но не меняет сам указатель. Так что это будет «е».
Но теперь, когда я запускаю второй printf, он показывает мне, что указатель по-прежнему указывает на «f» и не «возвращается» к «e».
Есть ли ошибка в моих мыслях? Или я что-то еще не учел?