Ho una domanda sull'incremento di puntatori che non capisco.Indicatori di incremento
permette di vedere 2 piccoli programmi:
int iTuna=1;
int* pPointer= &iTuna;
*pPointer = *pPointer + 1 ; //Increment what pPointer is pointing to.
cout << iTuna << endl;
In questo primo programma ho incremento cosa pPointer punta come questo "* pPointer = * pPointer +1". E come mi aspettavo Ituna cambiato in "2" e il programma stampato il valore "2"
int iTuna=1;
int* pPointer= &iTuna;
*pPointer++; //Increment what pPointer is pointing to.
cout << iTuna << endl;
system("PAUSE");
return 0;
Qui ho incrementato incrementato quello pPointer sta puntando a questo è stato "* pPointer ++". Ma qui iTuna rimane come "1" e i programmi stampano il valore "1". Sebbene mi aspettassi che questo funzionasse come il primo, non lo fece.
Please Help me e dimmi perché il secondo peice di codice non funziona come mi aspettavo e come aggirare esso.
Thank You
Prestare attenzione alla [precedenza degli operatori] (http://en.cppreference.com/w/cpp/language/operator_precedence) dei due operatori che si utilizzano. –
Nel secondo, si incrementa l'indirizzo del puntatore. Quindi se fai cout << pPointer; prima e dopo l'incremento otterrai un valore diverso. –
Per prima cosa è necessario effettuare il dereferenziamento e quindi incrementare il valore indicato - '++ * pPointer'. –