int arr[SIZE]={1,2,3,4};
int index;
for(index=0;index<SIZE;index++)
{
printf("arr[%d]=%d address=%p\n",index,arr[index],arr+index);
}
int *p=arr;
for(index=0;index<SIZE;index++)
{
printf("*(p+%d)=%d p+%d=%p\n",index,*(p+index),index,p+index);
}
getchar();
return 0;
以上代碼展示了讀取數組中元素的兩種方式,第一種是常規的使用數組下標來讀取。第二種方法是使用指針來讀取數組。
通過第一中方法中打印出來的內容,我們可以認識到,數組名其實就是這個數組的首地址,即:arr=數組首地址;arr+1:數組第二個元素的地址;arr+2:數組第三個元素的地址,以此類推。。。
第二種方法我們使用指針訪問代替了數組下標訪問,我們將 arr(即數組的首地址)賦值給了指針 *p,所以 p就等于arr的首地址,p+1就等于arr的二個元素的地址,那么*p就相當于了arr[0],*(p+1)就相當于arr[1]。
我們從中可以得出一個結論:數組標記實際上是一種變相使用指針的形式。