(1)数组指针
①、概念:指向数组的指针
②、作用:方便的操作数组中的各种数据

int* p1 =arr;,这里指针p1实际上是获取的arr的首地址。
int* p2 =&arr[0],这里行代码是验证上面的结果的。
③、指针循环遍历数组的每一个元素

*p1++,这里的*是解引用运算符,用来获取数组里面的数据。
++,表示每解引用一次之后,指针就向右移动4个字节(因为是int类型,所以移动4字节)
(2)数组指针的细节
①、arr参与计算的时候,会退化为第一个元素的指针
退化的原因就是指针记录的是数组的首地址(arr一般代表数组的首地址)。

int arr[] = {1,2,3};
int* p =arr;
int* pp = arr + 1;
此时指针pp记录的就是&arr[1]的地址值。
②、有两种情况不会退化
sizeof运算的时候,不会退化,arr还是整体;
&arr获取地址的时候,不会退化,此时&arr代表的是整个数组的地址值。

如果指针p1 + 1,就是向右移动4个字节,记录的是&arr[1]的地址值
指针p2 + 1,就是向右移动一个数组的字节大小,记录的就是下一个数组的整体地址值。
(3)数组指针细节的联系



(4)总结

