有人可以解释此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
答案 0 :(得分:2)
因为a
是一个数组并且具有存储地址,但是a + 1
是一个没有保存到变量的操作,并且&(a + 1)
表示该操作的地址,并不表示任何内容在C
中。因此,编译器发现此&
是按位运算符,因此您会遇到此错误。