Duvida sobre Ponteiro

1 resposta Resolvido
Enadrov
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.

1 Resposta

K
Solucao aceita

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

Criado 8 de junho de 2019
Ultima resposta 19 de jun. de 2019
Respostas 1
Participantes 2