数组名和数组名的地址为何相等

数组名和数组名的地址为何相等

int main()
{
    int arr[] = { 0 };
    printf("%p\n", arr);
    printf("%p", &arr);
    return 0;
}

运行结果如下:
0000007418AFF764
0000007418AFF764

数组名表示的就是arr数组首元素的地址,然后&arr表示的是整个数组arr,但是由于内存的访问都是一个字节为单位,所以这里&arr虽然意义上是整个数组,但是显示的结果与arr表示的一致。你再给数组增加几个元素,打印arr+1和&arr+1,会发现结果完全不同了。前者表示arr数组第二个元素的首地址,后者表示整个数组的下一个地址。一个+1跳过4字节,一个跳过整个数组

数组名其实就是地址
不信请看

#include <stdio.h>

int main()
{
    int arr[] = { 123 };
    printf("%d\n", *arr);
    return 0;
}

123

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^