Tengo una pregunta sobre el aumento de punteros que no entiendo del todo.Incrementando punteros
deja ver 2 pequeños programas:
int iTuna=1;
int* pPointer= &iTuna;
*pPointer = *pPointer + 1 ; //Increment what pPointer is pointing to.
cout << iTuna << endl;
En este primer programa que lo mínimo de la pPointer está apuntando a como este "* = * pPointer pPointer 1". Y como esperaba Ituna cambiado a "2" y el programa impreso el valor "2"
int iTuna=1;
int* pPointer= &iTuna;
*pPointer++; //Increment what pPointer is pointing to.
cout << iTuna << endl;
system("PAUSE");
return 0;
Aquí incrementa incrementa lo pPointer está apuntando a esto fue "* pPointer ++". Pero aquí iTuna se mantiene como "1" y los programas imprimen el valor "1". Aunque esperaba que este funcionara como el primero, no fue así.
Por favor, ayúdenme y díganme por qué la segunda parte del código no funciona como esperaba y cómo evitarlo.
Gracias
Tenga cuidado con [precedencia del operador] (http://en.cppreference.com/w/cpp/language/operator_precedence) de los dos operadores que utiliza. –
En el segundo, está incrementando la dirección del puntero. Así que si lo haces cout << pPointer; antes y después de incrementar obtendrás un valor diferente. –
Primero tiene que eliminar la referencia, y luego incrementar lo que se señala - '++ * pPointer'. –