指針的故事一

我們知道 *表示一個指針, ()表示一個函數,  [ ]表示一個數組。下面我們來看看各種各樣的類型:

int  board[8][8];   //int數組的數組

int **ptrl;                       //指向int的指針的指針

int  * risks[10];            //具有10個元素的數組,每個元素是一個指向int的指針

int  (* rusks) [10];      //一個指針,指向具有10個元素的int數組

int  * oof[3][4];          //一個3*4的數組,每個元素是一個指向int的指針

int  (* uuf) [3][4];     //一個指針,指向3*4共12個元素的int數組

int (* uof[3]) [4];     //一個具有3個元素的數組,每個元素都是一個指向具有4個元素的int數組的指針

      如果你能夠很輕鬆的辨別出上面這些定義的意思,那麼恭喜你,你已經基本掌握了指針精髓。下面我們來詳細分析一下;

1、表示一個數組[ ]和表示一個函數()具有同樣的優先級,這個優先級高於間接運算符*的優先級。這就以爲着下面的聲明使得risks是一個數組,並且是一個指針數組,而不是一個指向數組的指針!

int  * risks[10];

 

2、[ ]和()都是從左到右結合的,方括號之前的先組合在一起,這就意味着下面的聲明使得rusks是一個指針,並且是一個指向具有10個int值的數組的指針。

int  (* rusks) [10];

 

3、int * oof[3][4]; //一個3*4的數組,每個元素是一個指向int的指針。

     它是一個3*4的數組,數組裏面每一個元素都是指向int的指針,所以內存需要爲12個指針留出儲存空間。

 

4、int (* uuf) [3][4]; //一個指針,指向3*4共12個元素的int數組。

     它是一個指針,一個指向3*4的int數組的指針,內存只需要爲1個指針留出儲存空間。

 

5、int (* uof[3]) [4]; //一個具有3個元素的數組,每個元素都是一個指向具有4個元素的int數組的指針。

      它是一個具有3個元素的數組,每一個元素都是一個指針,並且是一個指向具有4個元素的int數組的指針,內存需要爲3個指針留出儲存空間。

     上面的例子就分析完畢。完全解剖指針 - 23號的wj - 偉堅的博客

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