易百教程

81、array_name 和 &array_name 有什么区别?

为了理解这个问题,让我们举个例子,假设 arris 是一个 5 个元素的整数数组:int arr[5];
如果打印 arr&arr ,那么会发现相同的结果,但两者都有不同的类型。

arr => 数组的名称是指向其第一个元素的指针。 所以这里 arr, split 作为指向整数的指针。
&arr => 它拆分为指向数组的指针,这意味着 &arr 将类似于 int(*)[5];

#include<stdio.h>
int main()
{
    int arr[5] = {0};
    printf("arr= %u\n", arr);
    printf("&arr= %u\n", &arr);
    printf("arr+1 = %u\n", arr+1);
    printf("&arr+1 = %u\n", &arr+1);
    return 0;
}

当编译上面的代码运行时,会发现 arr&arris 相同,但是由于指针类型不同,arr+1&arr+1 的输出会不一样。