在C程序中作为一元'&'操作数需要左值[关闭]

问题描述 投票:-5回答:1

有人可以解释这个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
c arrays
1个回答
2
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.