错误:左值必须为一元'&';操作数 //在线C++编译器 int main(){ int a[3]={9,8,7}; std::cout
您正在尝试检索右值的指针,即计算结果(a+1).arvalue被定义为没有地址的对象,因此它可以在计算期间存储在注册表中的某个位置。这就像说错误:左值必须为一元'&';操作数 //在线C++编译器 int main(){ int a[3]={9,8,7}; std::cout,c++,C++,您正在尝试检索右值的指针,即计算结果(a+1).arvalue被定义为没有地址的对象,因此它可以在计算期间存储在注册表中的某个位置。这就像说&1,但1当然没有指针。和操作数因此只能用于左值,即存储在某些位置的值内存地址 在您的情况下,a已经对应于指向a[0]的指针,因此要打印指向a[1]的指针,您实际上只需要: std::couta已经可以被视为int*所以您尝试获取int**或者其他?您希望打印什么?第二个很好。第一个不是(a+1是一个临时值,它没有地址)。请注意,a+1==&a[1],这可能
&1
,但1当然没有指针。和操作数因此只能用于左值,即存储在某些位置的值内存地址
在您的情况下,a
已经对应于指向a[0]
的指针,因此要打印指向a[1]
的指针,您实际上只需要:
std::couta
已经可以被视为int*所以您尝试获取int**或者其他?您希望打印什么?第二个很好。第一个不是(a+1
是一个临时值,它没有地址)。请注意,a+1==&a[1]
,这可能是您尝试执行的操作?
// Online C++ compiler
int main() {
int a[3]={9,8,7} ;
std::cout << &(a+1) <<"___" <<&(a[1]);
return 0;
}