为了理解这个问题,让我们举个例子,假设 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
的输出会不一样。