一维数组的数组名,在不改变其值情况下,可以做指针使用。
在作为指针时,a[i]等效于*(a+i)。
也可以单独定义指针。比如定义a的同类型一维指针p,令p=a;
这样*(p+i)同样是访问a[i]的。
区别是这个p是可以加减的,所以同样可以p = a+i; 这时*p就是a[i]了。
地址是可以进行加减运算的。而且加1的一会自动转换成加该类型一个变量所占空间大小,也就是说指向了下一个的地址了。所以应该是*(a+i)表示a[i]
#include
int main(void)
{
int a[] = {0,1,2,3,4,5,6};
int *p = a;
int i =0;
for (;i<7; i++)
printf("%d \n",*(p+i));
return 0;
}
输出的结果为:
0
1
2
3
4
5
6
是*(a+i),没有*a(i+1)这种表示方法的
p = &a[0];
p+i 是a[i]的指针访问方式