Duvida sobre Ponteiro

char s[100] = "OlaOleOli"
char *ptr = s;

Minha duvida é a seguinte por que a seguinte instrução

*(ptr+2);

ele me da a letra ‘a’ mas continua apontando para a primeira letra da string no caso a letra ‘O’ e quando faço a seguinte instrução:

ptr++;
*ptr;

ele me retorna a segunda letra da string e passa a apontar para esta letra(posicao)?

Achava que as duas instruções eram semelhantes;
Desde já agradeço.

Devido a que você não esta alterando o valor de ptr.

O valor de ptr é o mesmo do inicio do array s (devido a char *ptr = s;) e continua assim.

De forma identica a outros tipos, como int, char, os operadores de pós incremento, retornam o valor e imediatamente após modificam o valor para ser o sucessor do valor atual.

Com tipos padrão sem sobrecarga (no caso de C++), ptr++ é equivalente a ptr = ptr + 1

1 curtida