p = 数组与 p = &array[0] 相同吗?

Is p = array the same as p = &array[0]?

本文关键字:数组 array      更新时间:2023-10-16
int numbers[20];
int * p;    

下面的两个作业是一样的吗?

p = numbers;
p = &numbers[0];

是的,两者都是一样的。

在这种情况下,数组的名称衰减为指向其第一个元素的指针。

因此

p = numbers;       //Name of the array

与:

p = &numbers[0];   //Address of the First Element of the Array

是的,它们是相同的。当在右值上下文中调用数组的名称时,它会衰减到指向其第一个元素的指针。

numbers[0]    is equal to     *number    and equal to *(number+0)
numbers[x] = *(number+x)

所以 &(*(数字+x( ( = 数字+x,这是第 x 个元素的地址