C++ 尝试打印[1]的地址时出错:左值必须为一元'&';操作数弹出
我正在尝试打印a[1]元素的地址。我知道这可以通过以下方式实现:C++ 尝试打印[1]的地址时出错:左值必须为一元'&';操作数弹出,c++,c++14,C++,C++14,我正在尝试打印a[1]元素的地址。我知道这可以通过以下方式实现: cout对于任何数组或指针a和索引i,表达式a[i]完全等于*(a+i)。由此我们可以得出结论,a+i是一个指针,它等于&a[i] 因此,当你尝试执行&(a+1)时,它实际上等于&&a[1],这毫无意义,并且会给你一个错误。非正式地说,数组+1不作为变量存在(例如,你不能将它设置为另一个值),因此你不能获取它的地址。更正式地说,需要左值;i、 可以设置为一个值的东西 因此&(array+1)会发出一个编译错误:在您的例子中,有一些
cout对于任何数组或指针a
和索引i
,表达式a[i]
完全等于*(a+i)
。由此我们可以得出结论,a+i
是一个指针,它等于&a[i]
因此,当你尝试执行&(a+1)
时,它实际上等于&&a[1]
,这毫无意义,并且会给你一个错误。非正式地说,数组+1
不作为变量存在(例如,你不能将它设置为另一个值),因此你不能获取它的地址。更正式地说,需要左值;i、 可以设置为一个值的东西
因此&(array+1)
会发出一个编译错误:在您的例子中,有一些有用的提示
在指针算法中,您是否只想将array+1
用作array
之外的地址?在对array+1
的评估中,array
衰减为int*
类型。可能只是a+1
?遵循“我知道…”的假设已经错了。指向array+1
的东西没有地址。
#include <iostream>
using namespace std;
int main()
{
int array[10];
array[1]=3;
cout<<"Address : "<<&(array+1);
return 0;
}