hola. soy nuevo en el foro mi nombre es carlos alberto hinojosa soy de colombia y tengo 16 años. estoy estudiando c++ y voy por punteros, en el curso que sigo me aparece esto:
*puntero++; /* Equivale a vector[0]++; */
puntero++; /* puntero equivale a &vector[1] */
y me explican que en la primera linea incrementa el contenido de la memoria apuntada por "puntero", que es
vector[0], es decir que si en la posicion
- habia un 2 ahora aumenta a 3, eso es lo que entendí. y en la segunda linea me explican que cambia la posicion a la que apunta el puntero es decir que si antes apuntaba a
- ahora lo hace a [1].
pero al llevarlos a la practica, la segunda linea hace lo que me explican, pero la primera no:
int main ()
{
int a[4]={2,4,8,9},*p;
p=a;
cout<<*p<<"t";
*p++;
cout<<*p;
return 0;
}
el resultado que esperaria es que me mostrara en pantalla esto
2 3
pero en cambio me muestra
2 4
parece como si en vez de aumentar la variable lo que hace es exactamente lo que indica la linea dos (mas arriba).
para obtener el resultado deseado tengo que poner el incremento como prefijo asi:
int main ()
{
int a[4]={2,4,8,9},*p;
p=a;
cout<<*p<<"t";
++*p;
cout<<*p;
return 0;
}
entonces me gustaria saber porque pasa esto. si se supone que cuanto esta el operador de "desreferencia" o "indireccion" (*) se esta trabajando con el valor almacenado el la posición de memoria que almacena el puntero.