观察两个指针是否等价,要比较两项:
1. 指针是否指向同一个地方
2. 指针的推进步长是否相同
例如
int a[3][4];
指针 a
a[0]
都指向a[0][0],
然而a的推进步长为4*sizeof(int)=16,即a+1指向a[1][0],
a[0]的推进步长为sizeof(int)=4,即a[0]+1指向a[0][1]
注意,a+1和a[0]+1都是指针
可以认为a是比a[0]高一层次的指针,尽管它们指向相同的内容。
通过 *和 & 可以对指针进行降级,升级操作,即降低或提升它们的步长
*a 和 a[0]为相同的指针,它们指向相同的内容,步长均为sizeof(int)
a 和 &a[0]为相同的指针,它们指向相同的内容,步长均为 4*sizeof(int)