Problema y duda con incremento de punteros

Iniciado por NicolasPileci, 6 Septiembre 2016, 20:20 PM

0 Miembros y 1 Visitante están viendo este tema.

NicolasPileci

Hola a todos, buenos dias.

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



#include <stdio.h>

int mi_arreglo[] = {1,23,17,4,-5,100};
int *ptr;
int main(void)
{
    int i;
    ptr = &mi_arreglo[0];
    printf("\n\n");
    for (i = 0; i < 6; i++)
    {
        printf("mi_arreglo[%d] = %d ", i, mi_arreglo[i]); /*<-- A */
        printf("ptr + %d = %d\n",i, *(ptr + i)); /*<-- B */
    }
    return 0;
}



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!

AlbertoBSD

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!
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW