敲幾行程式碼來看看幾種訪問的形式~
#include <stdio.h>;
int main()
{
int arr[5] = {0, 1, 2, 3, 4, 5}; //初始化5個元素的一維陣列
int *p = arr; //定義一個指向陣列arr的指標 ,陣列型別不需要引用地址符&
printf("arr[2]:%d\n", arr[2]); //①:通過下標直接訪問 [通過陣列名的指標形式訪問 ]
printf("arr[2]:%d\n", *(p+2)); //②:p本身代表一個地址(首地址),p地址本身是第0個,+ 2是第三個地址,然後用*號括起來,取值
printf("arr[2]:%d\n", *(arr+2)); //③:因為是陣列型別,本身arr是一個首地址,p和arr都是首地址,直接地址+2,然後取值
printf("arr[2]:%d\n", p[2]); //④:既然p是首地址,那麼也可以當做陣列,直接下標訪問。[通過指標變數名的陣列下標形式訪問]
//---------分割線
printf("%d\n",*p); //輸出為0,陣列的首元素。
printf("%d\n",*arr); //輸出為0,陣列的首元素。
printf("%d\n",p); //輸出為地址,陣列的地址。
printf("%d\n",arr); //輸出為地址,陣列的地址。
return 0;
}
編譯執行結果截圖如下: