c point

a[i] 与 *(a+i) 是等价的。

事实上在计算a[i]的值时,c语言首先将前者转换为后者形式,

而且,通常而言,用指针编写的程序要比用数组下标编写的程序执行速度快,(为什么?)

因此,应该尽量用*(a+i)代替a[i],

但是,我们必须记住 

指针是一个变量

在c语言中 pa = a 和 pa ++ 都是合法的(pa与a 是指针变量),

但数组名不是变量,对数组名进行以上操作是非法的。

当把数组名传递给一个函数参数时,

实际上是 用 局部变量 保存了一个 常量,

arr  --------->  int *p 

在函数定义中 char s[] 与 char *s 是完全等价的。

我们通常更习惯于使用后一种形式,因为它比前者更直观地表明了该参数是一个指针。

原文地址:https://www.cnblogs.com/xkxf/p/6144412.html