int main ()
{
int numbers[5];
int * p;
p = numbers; *p = 10;
p++; *p = 20;
........
これは、Web サイトの c++ マニュアルのポインター セクションからのものです。道に迷いました。
p配列への参照の場合、4 行目で増加しているのは何ですか? それとも配列を指していnumbersますか?
配列内の値を再割り当てするよりも、これが優れているのはいつでしょうか?
これが私の考えです。間違っていたら訂正してください。
int *p;p がどうあるべきかを決定します - 整数ポインタ、つまり、メモリアドレスの場所を格納する変数 (参照する場合、整数値以外は期待されません)
p = numbers;前の行ですでに宣言されている p が何であるかを決定しません。
変数 p (つまり、p に割り当てられたメモリ) に numbers の「右辺値」を割り当てるだけです。つまり、number 配列の最初の項目への実際のメモリ アドレスである number 計算値。
p共通点はありnumberませんが、同じ値 (メモリアドレス) を持っていることだけです。
は整数を指し、配列を指しているため、c++ では別の方法で処理されますp。sizeof を実行すると、整数と配列の sizeof が return として取得されます。numberpnumber
C++ では、配列は一種のポインターであり、配列の最初の値を指します。構文numbers[2]は と同じ意味*(numbers+2)です。ポインタnumbersを にコピーすると、配列の最初の値 も指すようになりpます。でインクリメントすると、配列の 2 番目の値を指すようになります。pnumbers[0]p++numbers[1]
*p = 10;コマンドおよびを実行すると、 が指す値が 10 および 20 に等しく*p = 20;設定されます。pこれらはそれぞれnumbers[0]とnumbers[1]です。