@TOC


前言

之前我们讲了指针数组,今天讲一下数组指针。

一、数组与指针的概述:

数组指针就是数组的指针,就是指向数组的指针。

  1. int a [5] = {1,2,3,4,5}; / / 定义一个数组
  2. int *p = &a[0]; / / 定义一个指针指向数组的首地址,由于 数组的首地址就是数组名,所以&a[0]==a; 则可写为 int * p = a;
  3. 则此时的指针 p 就是数组指针

二、数组指针遍历数组:

因为 指针 p 指向 数组的首地址,则可以通过地址遍历数组的元素。

  1. 前面我们讲过指针的偏移,又因为 p 指向数组可得到: p+0 == &a[0];
    p+1 == &a[1]; p+2 == &a[2]; p+3 == &a[3]; p+4 == &a[4];
  2. a[0] == *&a[0] == *(p+0) == *p; a[1] == *&a[1] == *(p+1) == *p; a[2] == *&a[2] == *(p+2) == *p; a[3] == *&a[3] == *(p+3) == *p; a[4] == *&a[4] == *(p+4) == *p;

三、数组指针遍历数组元素的应用:

c语言 数组与指针_数组

注意: 1.* (p+i)一定要加小括号,因为* 的优先级低于 + 。

总结

指针数组和数组指针一定要好好理解,不要搞混淆。