传统的遍历数组都是通过数组名加上索引来实现数组的遍历的。那么在c语言中还可以实现通过指针来遍历,通过数组的指针来遍历。如:
#include
int main ()
{
int a[]=;
int *p;
p=a;
for(int i=0;i
printf("a[%d]=%d ",i,a[i]);
}
printf("--------------- ");
//数组占据内存中一块连续的存储空间
//十六进制与10进制的对应关系是:0-9对应0-9;A-F对应10-15
for(int x=0;x
printf("a[%d]:%p:%d ",x,(p+x),*(p+x));
}
return 0;
}
这里会感觉p+x这种操作方式比较奇葩,其实这里只要抓住两个核心即可。
首先数组占据内存中是一块连续的存储空间,而数组的指针就是这练习的存储空间中的第一个索引的位置,那么指针的自增就相当于移动到下一个紧接这这个索引的那个位置了。
这里由于是int型的,所以每移动一个位置就会增加4个字节,指针地址是以16进制来呈现的,那么可以参考下当前程序的运行结果就可以看到每次移动一个位置就增加4个字节的规律了十六进制与10进制的对应关系是:0-9对应0-9;A-F对应10-15。