C++ポインタの算術演算操作

1246 ワード

short int height[10]; //int    (short int     2  )
cout <<  "height       "<< height << endl 
     <<  "height+1     "<< height + 1 << endl
     <<  "&height[0]   " <<  &height[0] << endl
     <<  "&height+1    "<< &height + 1<< endl
     <<  "height+9     "<< height+9 << endl
     << "height+10    " << height + 10 << endl;

結果:
height       0136F900
height+1     0136F902
&height[0]   0136F900
&height+1    0136F914
height+9     0136F912
height+10    0136F914
  • heightは&height[0]の値と等しい.
  • height+1=height+2バイト=height+1 short intすなわち配列要素.
  • height+9はheight[]の最後の要素のアドレスであり、height+10は配列終了後の最初のアドレスである.
  • &height+1=height+10、すなわち&height+1を実行した結果、アドレスが配列全体にジャンプした後の最初のアドレスである.

  •  
    上&height[0]は配列の最初の要素であるアドレスを取得し、アドレスが1000であると仮定します.&heightは直接配列名を取得し、このときheight全体の配列であるアドレスを取得し、10要素を含むint型配列を指し、アドレス範囲は1000~1018である.heightは&height[0]に等しいことを知っています.height+1はアドレスを2バイト追加します.ただし&height+1はアドレスを10*2バイト増やします.
     
    参考c++菜鳥宿場ノート
    C++ポインタ算術演算ノート