數組指針

指向數組的指針和指針數據一直是一個繞口,難記,易混,易忘的東西。爲了弄清楚這寫概念。必須記住幾個關鍵點。

1 數據名是數組第一個元素的地址。

2. a[i]   等價於 *(a+i)

 

舉例:

int a[10];

int *p = a;  <==>  int * p = &a[0];  

即 a 就是 &a[0];

 

int a[][5];

int (*p)[5]  = a ;    <==>  int (*p)[5] = &a[0];

int *p[5];

p[0] = &a[0][0];  <==> *p = &a[0][0]; 

 

以下是引用網絡上的東西

int   (*p)[10];
定義了一個數組指針,這個指針與一般的指針沒有什麼區別,僅僅是這個指針指向一個數組。這裏我們把數組作爲了基本的元素處理。也就是說,將整個數組作爲一種類型,而數組名就是這個類型的一個具體變量。例如:
int   a[10];
一個數組類型,形狀就是這樣:int   [10];a就是新定義的一個變量。
int   b[3];
一個數組類型,形狀就是這樣:int   [3];b就是新定義的一個變量。
因爲這兩個類型形狀不一樣,因此是兩個不同的類型,因此a,b就是不同類型的變量。這就好比int   a和double   b   :a和b不一樣。不知道大家是否已經對數組類型有了基本的印象?
那麼把數組名作爲該數組類型的一個具體變量,我們就可以定義指向這個變量的指針,即數組指針。
對於數組類型:int   [10],我們可以定義一個指針,int   (*p)   [10].注意這裏一定要加上小括弧。否則就會變成了指針數組。定義了指針之後,我們可以對該指針賦值,如p=&a;如果定義了一個二維數組,int   c[3][10]。我們可以認爲定義了一個一維的數組,這個數組有三個int[10]的元素。因此和一般的數組一樣,我們可以將該數組名賦給指針,其實也就是第一個元素的地址付給指針。即:   p=c;或者p=&c[0]。其餘情況以此類推。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章