Dúvida Interessante

acfryx

Power Member
Estava eu a programar em C quando ao fazer o debugging de uma parte do código descobri que por exemplo:
Código:
int x = 68;
int *var = &x;

*var++ // é igual a ter: 
       // var++; 
       // *var = *var + 1
       // o que dá erro
(*var)++ // já faz
         // *var = *var + 1
Alguém fazia ideia disto?? Ou estarei a fazer alguma coisa mal??

Cumprimentos...

Mal acabei de escrever o POST pensei em ver a tabela de precedências dos operadores em C e verifiquei que o operador ++ está antes do operador * daí o "problema"...
 
Última edição pelo moderador:
Atenção:
var++; -> Vais andar com o ponteiro 4 bytes para a frente. Provavelmente dá erro porque a memória não te pertence.
(*var)++; -> vais incrementar o valor, no endereço apontado por var.
 
Última edição:
Back
Topo