Недавно я столкнулся с этой проблемой, которую я не могу понять сам.
Что означают эти три выражения ДЕЙСТВИТЕЛЬНО?
*ptr++
*++ptr
++*ptr
Я попробовал Ритчи. Но, к сожалению, он не смог следить за тем, что он рассказал об этих трех операциях.
Я знаю, что все они выполняются для увеличения указателя/указанного значения. Я также могу догадаться, что может быть много вещей о приоритетности и порядке оценки. Подобно тому, как сначала инкремент указателя, затем извлекает содержимое этого указателя, он просто извлекает содержимое, а затем увеличивает указатель и т.д. Как вы можете видеть, я не имею четкого понимания их фактического которые я хотел бы как можно скорее очистить. Но я действительно потерян, когда получаю возможность применить их в программах. Например:
int main()
{
const char *p = "Hello";
while(*p++)
printf("%c",*p);
return 0;
}
дает мне этот результат:
ello
Но я ожидал, что он напечатает Hello
.
Один окончательный запрос. Пожалуйста, дайте мне примеры того, как каждое выражение работает в данном фрагменте кода. Поскольку большую часть времени только один абзац теории пролетает над моей головой.