【c++笔记】关于指向数组的指针

关于指向数组的指针,拨乱反正:

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 的结果是地址跳到整个数组之后第一个地址。

即:

& 并不是不能用在数组名上,只是用在数组名和数组名[i]有所区别。例如:

int height[10];//int型的数组
cout << &height << endl;//&用在数组名上
cout << &height[0] << endl;//&用在数组第一个元素上

上面 &height[0] 就是取得是数组第一个元素的地址,假设地址为 1000;&height 是直接对数组名进行取地址,这个时候就是取得是 height 整个数组的地址,指向包含 10 个元素的 int 型数组,地址范围为 1000~1036;

我们知道 height 等价于 &height[0],height+1 会将地址加 4 个字节;但 &height+1 就是将地址增加 10*4 个字节。

发布了73 篇原创文章 · 获赞 3 · 访问量 3519

猜你喜欢

转载自blog.csdn.net/qq_42021845/article/details/102807811