有人可以解释这个C代码最后一行错误背后的原因吗?我正在尝试打印单维数组元素的地址。数组a定义为:
int a[5]={1,2,3,4,5};
printf("%p",a+1); //No Error
printf("%p",&a); //No Error
printf("%p",&(a+1)); //lvalue required as unary '&' operand Error
因为a
是一个数组并且具有存储地址,但a + 1
是一个没有保存到变量的操作,而&(a + 1)
表示该操作的地址,并且它在C
中没有任何意义。因此,编译器会将此&
作为按位运算符,因此您会收到此错误。