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++菜鸟驿站笔记