私はかなり理解していないポインタをインクリメントすることに関して質問があります。私はpPointerは、この "* pPointer = * pPointer +1" 好きに指しているものをインクリメントし、この最初のプログラムではポインタを増やす
int iTuna=1;
int* pPointer= &iTuna;
*pPointer = *pPointer + 1 ; //Increment what pPointer is pointing to.
cout << iTuna << endl;
:
は2つの小さなプログラムを見てみましょう。 そして、私はここに私がpPointerはこれに指しているものをインクリメントインクリメント
int iTuna=1;
int* pPointer= &iTuna;
*pPointer++; //Increment what pPointer is pointing to.
cout << iTuna << endl;
system("PAUSE");
return 0;
をiTunaが「2」に変更し、プログラムが値「2」をプリントアウトし、予想通りには、「* pPointer ++」でした。しかし、ここではiTunaは "1"のままで、プログラムは値 "1"を出力します。 私はこのものが最初のものとして働くことを期待していましたが、それはしませんでした。
コードの2番目の部分が私が期待したように機能しない理由と回避方法を教えてください。
は
使用する2つの演算子の[演算子の優先順位](http://en.cppreference.com/w/cpp/language/operator_precedence)に注意してください。 –
2番目の方法では、ポインタのアドレスをインクリメントします。 だから、もしあなたがcout << pPointer;増分の前後で異なる値が得られます。 –
まず逆参照してから、 '++ * pPointer'を指すポインタを増やす必要があります。 –