1
int main ()
{
  int numbers[5];
  int * p;
  p = numbers;  *p = 10;
  p++;  *p = 20;
........

これは、Web サイトの c++ マニュアルのポインター セクションからのものです。道に迷いました。

p配列への参照の場合、4 行目で増加しているのは何ですか? それとも配列を指していnumbersますか?

配列内の値を再割り当てするよりも、これが優れているのはいつでしょうか?

4

4 に答える 4

1

これが私の考えです。間違っていたら訂正してください。

int *p;p がどうあるべきかを決定します - 整数ポインタ、つまり、メモリアドレスの場所を格納する変数 (参照する場合、整数値以外は期待されません)

p = numbers;前の行ですでに宣言されている p が何であるかを決定しません。

変数 p (つまり、p に割り当てられたメモリ) に numbers の「右辺値」を割り当てるだけです。つまり、number 配列の最初の項目への実際のメモリ アドレスである number 計算値。

p共通点はありnumberませんが、同じ値 (メモリアドレス) を持っていることだけです。 は整数を指し、配列を指しているため、c++ では別の方法で処理されますp。sizeof を実行すると、整数と配列の sizeof が return として取得されます。numberpnumber

于 2013-06-10T19:50:03.780 に答える
0

C++ では、配列は一種のポインターであり、配列の最初の値を指します。構文numbers[2]は と同じ意味*(numbers+2)です。ポインタnumbersを にコピーすると、配列の最初の値 も指すようになりpます。でインクリメントすると、配列の 2 番目の値を指すようになります。pnumbers[0]p++numbers[1]

*p = 10;コマンドおよびを実行すると、 が指す値が 10 および 20 に等しく*p = 20;設定されます。pこれらはそれぞれnumbers[0]numbers[1]です。

于 2013-06-10T19:46:17.517 に答える