Expressões de ponteiro: * ptr ++, * ++ ptr e ++ * ptr
Recentemente me deparei com este problema que não consigo entender sozinho.
O que essas três expressõesREALMENTE significar?
*ptr++
*++ptr
++*ptr
Eu tentei o Ritchie. Mas, infelizmente, foi incapaz de seguir o que ele disse sobre essas 3 operações.
Eu sei que eles são todos executados para incrementar o ponteiro / o valor apontado. Eu também posso adivinhar que pode haver muitas coisas sobre precedência e ordem de avaliação. Como um primeiro incrementa o ponteiro, em seguida, busca o conteúdo desse ponteiro, um simplesmente busca o conteúdo e, em seguida, incrementa o ponteiro etc. etc. Como você pode ver, eu não tenho uma compreensão clara sobre o seureal operações, o que eu gostaria de esclarecer o quanto antes. Mas estou realmente perdido quando tenho a chance de aplicá-los em programas. Por exemplo:
int main()
{
const char *p = "Hello";
while(*p++)
printf("%c",*p);
return 0;
}
me dá esta saída:
ello
Mas minha expectativa era de que imprimiriaHello
. Um pedido final - Por favor, dê-me exemplos de como cada expressão funciona em um determinado trecho de código. Como na maior parte do tempo, apenas um mero parágrafo da teoria sobrevoa a minha cabeça.