在C程序中需要作为一元'&'操作数的左值

时间:2018-10-07 16:07:10

标签: c arrays

有人可以解释此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

1 个答案:

答案 0 :(得分:2)

因为a是一个数组并且具有存储地址,但是a + 1是一个没有保存到变量的操作,并且&(a + 1)表示该操作的地址,并不表示任何内容在C中。因此,编译器发现此&是按位运算符,因此您会遇到此错误。