Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: NicolasPileci en 6 Septiembre 2016, 20:20 pm



Título: Problema y duda con incremento de punteros
Publicado por: NicolasPileci en 6 Septiembre 2016, 20:20 pm
Hola a todos, buenos dias.

Tengo una duda sobre el incremento de un puntero a int.

Código
  1.  
  2. #include <stdio.h>
  3.  
  4. int mi_arreglo[] = {1,23,17,4,-5,100};
  5. int *ptr;
  6. int main(void)
  7. {
  8.    int i;
  9.    ptr = &mi_arreglo[0];
  10.    printf("\n\n");
  11.    for (i = 0; i < 6; i++)
  12.    {
  13.        printf("mi_arreglo[%d] = %d ", i, mi_arreglo[i]); /*<-- A */
  14.        printf("ptr + %d = %d\n",i, *(ptr + i)); /*<-- B */
  15.    }
  16.    return 0;
  17. }
  18.  
  19.  

Si reemplazamos B por: printf("ptr + %d = %d\n", i, *ptr++);

Imprime los valores en el orden correcto.

Pero si en cambio reemplazamos B por: printf("ptr + %d = %d\n", i, *(++ptr));

Imprime los valores siguientes a la posición original.

Yo había leído que ptr++ equivale a ++ptr, pero como se puede ver en este ejemplo, la relación no se cumple.

¿Es realmente así o estoy equivocado?

Gracias!


Título: Re: Problema y duda con incremento de punteros
Publicado por: AlbertoBSD en 6 Septiembre 2016, 20:24 pm
Uno es pre-incremento y el otro es pos-incremento.

El primero ++ptr hace el incremento y despues se guarda el valor resultante como parametro para printf

El segundo ptr++ primero guarda el valor como parametro de printf y luego realiza el incremento.

Saludos!


Título: Re: Problema y duda con incremento de punteros
Publicado por: NicolasPileci en 6 Septiembre 2016, 20:34 pm
Barbaro,

Muchas gracias!