Указатель выражений: *для PTR++, *++PTR и ++*ПТР



недавно я столкнулся с этой проблемой, которую я не могу понять сам.



что означают эти три выражения действительно в смысле?



*ptr++
*++ptr
++*ptr


Я пробовал Ричи. Но к сожалению не смог уследить за тем, что он рассказал об этих 3-х операциях.



Я знаю, что все они выполняются для увеличения указателя/указанного значения. Я также могу предположить, что может быть много вещей о приоритете и порядке оценки. Как один сначала увеличивает указатель, затем извлекает содержимое этого указателя, просто извлекает содержимое, а затем увеличивает указатель и т. д. и т. д. Как вы можете видеть, у меня нет четкого понимания их фактический операции, которые я хотел бы, чтобы очистить как можно скорее. Но я действительно теряюсь, когда получаю возможность применять их в программах. Например:



int main()
{
const char *p = "Hello";
while(*p++)
printf("%c",*p);
return 0;
}


дает мне этот выход:



ello


но я ожидал, что он будет печатать Hello .
Один последний запрос -- пожалуйста, дайте мне примеры того, как каждое выражение работает в данном фрагменте кода. Поскольку большую часть времени только параграф теории пролетает над моей головой.

712   0  

Comments

    Ничего не найдено.