C語言陣列篇(二)指標陣列和陣列指標
阿新 • • 發佈:2018-12-05
陣列指標 和 指標陣列
陣列指標就不講了,見一維陣列和指標.
還沒完,第三步,數組裡面的每個元素嗾使指標,但是指標就必須指向拎一個記憶體空間,那麼這個空間有多大?
int *point[10] //表示有一個數組p,裡面存放的都是指標型別的變數,然後這些指標都指向int大小的空間.
從這裡我們也發現,他的優先順序是 以point為中心,從右往左 先p[] --> *p[] --> int *p[]
這兩個名詞可以說是經常搞混了 陣列指標--> 陣列的指標 就是前面講的 指向陣列a的指標p; 指標陣列-->存滿指標的陣列 就是一個數組裡面存的都是指標.----> 也是所謂的二級指標
那麼指標陣列呢? 首先,指標陣列是 一個數組裡面都是指標
第一步,我們需要一個數組 point[10] //我們定義了一個空間為10的陣列 第二步,這個陣列是什麼型別的? 指標型別的 * point[10] //區別: int a[10] 中 資料元素是int型的,那我們現在需要指標型的,就把int換成 * .
int *p[10] 就是陣列指標.
指標陣列就是二級指標. 因為指標陣列不單單又有它自己本身,還附帶每個指標袁術指向的小空間.那麼:
陣列的地址是p,從陣列陣列的第一個元素是*p,第二個元素是*(p+1),第三個是... 那麼,第一個元素指標所指向的小空間的內容就是 *(*(p)) 簡寫成 **p;
所以,對於二級指標**p 來說 p 是陣列地址, *p 是數組裡面的元素, **p 是數組裡面指標指向的資料 .
從另一個角度理解 *p[10] 因為 p[10] 的指標形式是 *p 所以--> *(*p) 也符合定義
//指標陣列的形參 -->二級指標 int func(int **p){ //... return 0;
}
int main(){ //陣列指標 int *p[10]; //陣列指標 func(p); //指標陣列的實參
}