为什么数组的左值和右值是一样的?
参考代码:为什么&a
和a
具有相同的值?
int main()
{
int a[4];
*a = 3;
printf("&array: %p array: %p array[0]: %d", &a, a, *a);
return 0;
}
输出:&array: 000000000023FE50 array: 000000000023FE50 array[0]: 3
这里,&a
和a
给出了相同的输出,因为在C
中,数组名称的行为(或者更好,被求值为)作为数组的第一个元素的地址。