一维数组
一维数组的数组名:就是一维数组的指针(起始地址)
如果int *px = x;则:
x[i]、*(px+i)、*(x+i)、px[i]具有完全相同的功能:访问数组第i+1个数组元素
注意:1、指针变量和数组在访问数组元素时,具有相同的形式,因为指针变量和数组名都是地址量
2、但指针变量和数组指针(数组名)在本质上不同,指针变量是地址变量,而数组指针是地址常量
上图中,a+1本身就是个地址(相当于&a[1])
二维数组
使用一级指针遍历二维数组
第十行可以写成p = a[0]或者p = &a[0][0],但是不能写成p = a,因为p+1得到的是a[0][1]而a+1得到的是a[1][0]
可以把二维数组看成由多个一维数组组成的
下图中, 加了*相当于改变了指针的移动的性质,由二维数组(行地址)变成了一维数组*(a+1)+1=a[1]+1,相当于a[1][1]
下图中,方括号中的常量表达式表示指针加1,移动几个数据。下图中p+1移动3个数据
新的写作方法: