首页 > 试题广场 >

下面代码的输出是什么?()#include using na

[不定项选择题]
下面代码的输出是什么?()
#include <iostream>
using namespace std;

int main() {
    int a[2][5] = {{1,2,3,4,5},{6,7,8,9,10}};
    int *ptr = (int *) (&a + 1);
    cout << *(ptr - 2) << endl;
    return 0;
}
  • 3
  • 4
  • 8
  • 9
a+1 才表示 数组首元素地址+1,即指到6的位置。而&a+1的偏移量是整个数组的长度,指到了10后一位,所以从10后一位往前移动两个单位(-2)刚好就是9了。不信? 上机试试&a+1 和 a+1的区别
发表于 2020-11-19 20:53:39 回复(4)
这个题说是多选,我也是醉了
发表于 2022-01-14 16:47:39 回复(0)
a+1 才表示 数组首元素地址+1,而&a+1的偏移量是整个数组的长度
发表于 2022-03-15 11:16:33 回复(0)
指针指向&a+1,即数组后面的一个空间,地址减去2,即指向倒数第二个数组元素! 若我理解错了,请指正,共同学习
发表于 2022-03-18 16:17:49 回复(0)
看指向的类型,得到指针偏移的步长
发表于 2022-03-04 00:13:05 回复(0)
指针指向&a+1,即数组后面的一个空间,地址减去2,即指向倒数第二个数组元素! 若我理解错了,请指正,共同学习
发表于 2020-08-24 15:01:06 回复(0)
&a+1的偏移量是整个数组的长度
发表于 2022-04-14 18:45:15 回复(0)
<p>如果是正常的*(a+1)那么指针就会指向a[0][1]</p><p>但是a是把整个数组看作是整体,所以如果加1上去就变成a数组的后一个地址。</p><p>*(p-2)又回到了之前第一句话的情况</p>
发表于 2020-09-30 20:21:42 回复(0)
发表于 2023-04-23 13:22:02 回复(1)
提示一个多选题给我整不会了
发表于 2022-10-28 21:52:46 回复(0)
&a + 1已经越界了,指向的时数组最后一个元素的下一个位置,转换成int*类型后,-2回到9
发表于 2022-09-30 19:39:17 回复(0)
&a+1 加的是整个数组的长度
发表于 2021-12-24 11:23:30 回复(0)
对a取地址取的是整个数组的地址,可以理解为存储首地址a的指针的地址。
发表于 2021-03-30 11:58:27 回复(0)