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;
以上代碼展示了讀取數(shù)組中元素的兩種方式,第一種是常規(guī)的使用數(shù)組下標(biāo)來讀取。第二種方法是使用指針來讀取數(shù)組。
通過第一中方法中打印出來的內(nèi)容,我們可以認(rèn)識到,數(shù)組名其實(shí)就是這個(gè)數(shù)組的首地址,即:arr=數(shù)組首地址;arr+1:數(shù)組第二個(gè)元素的地址;arr+2:數(shù)組第三個(gè)元素的地址,以此類推。。。
第二種方法我們使用指針訪問代替了數(shù)組下標(biāo)訪問,我們將 arr(即數(shù)組的首地址)賦值給了指針 *p,所以 p就等于arr的首地址,p+1就等于arr的二個(gè)元素的地址,那么*p就相當(dāng)于了arr[0],*(p+1)就相當(dāng)于arr[1]。
我們從中可以得出一個(gè)結(jié)論:數(shù)組標(biāo)記實(shí)際上是一種變相使用指針的形式。