標籤:三級指標 int 概念 三維 csdn 另一個 art 輸入參數 分配
1.什麼叫數組指標?
數組指標:一個指向一維或者多維陣列的指標。
比如:int * b=new int[10];指向一維數組的指標b ; 注意,這個時候釋放空間一定要delete [] ,否則會造成記憶體泄露,b 就成為了空懸指標。
int (*b2)[10]=new int[10][10]; 注意,這裡的b2指向了一個二維int型數組的首地址。
注意:在這裡,b2等效於二維數組名,但沒有指出其邊界,即最高維的元素數量,但是它的最低維數的元素數量必須要指定!就像指向字元的指標,即等效一個字串,不要把指向字元的指標說成指向字串的指標。這與數組的嵌套定義相一致。
int(*b3) [30] [20]; //三級指標――>指向三維數組的指標;
int (*b2) [20]; //二級指標;
b3=new int [1] [20] [30];
b2=new int [30] [20];
兩個數組都是由600個整數組成,前者是只有一個元素的三維數組,每個元素為30行20列的二維數組,而另一個是有30個元素的二維數組,每個元素為20個元素的一維數組。
刪除這兩個動態數組可用下式:
delete [] b3; //刪除(釋放)三維數組;
delete [] b2; //刪除(釋放)二維數組;
再次重申:這裡的b2的類型是int (*) ,這樣表示一個指向二維數組的指標。b3表示一個指向(指向二維數組的指標)的指標,也就是三級指標.
2.什麼叫指標數組?
指標數組:一個數組裡存放的都是同一個類型的指標,通常我們把他叫做指標數組。
比如 int * a[10];它裡邊放了10個int * 型變數,由於它是一個數組,已經在棧區分配了10個(int * )的空間,也就是32位機上是40個byte,每個空間都可以存放一個int型變數的地址,這個時候你可以為這個數組的每一個元素初始化,或者單獨做個迴圈去初始化它。
舉例:聲明一個指標數組如下所示,可理解為:首先,其為一個3維數組,數組裡存放的是返回int型的指標。
[cpp] view plain copy
- int *p[3];
- p[0] = new int[4];
- p[1] = new int[5];
- p[2] = new int[6];
-
- delete p[0];
- delete p[1];
- delete p[2];
3.什麼是函數指標?
關於函數指標,我想在我們可能需要寫個函數,這個函數體內要調用另一個函數,可是由於項目的進度有限,我們不知道要調用什麼樣的函數,這個時候可能就需要一個函數指標;
int a();這個一個函數的聲明;
int (*b)();這是一個函數指標的聲明;
讓我們來分析一下,左邊圓括弧中的星號是函數指標聲明的關鍵。另外兩個元素是函數的傳回型別(void)和由邊圓括弧中的入口參數(本例中參數是空)。注意本例中還沒有建立指標變數-只是聲明了變數類型。
目前可以用這個變數類型來建立類型定義名及用sizeof運算式獲得函數指標的大小:
unsigned psize = sizeof (int (*) ()); 獲得函數指標的大小
為函數指標宣告類型定義 typedef int (*PFUNC) (); //PFUNC是一個函數指標,它指向的函數沒有輸入參數,返回int。使用這個類型定義名可以隱藏複雜的函數指標文法,就我本人強烈建議我們大內弟子使用這種方式來定義。
[引自]http://blog.csdn.net/wuti_pl/article/details/6160856
http://blog.csdn.net/laoyang360/article/details/7269220
C++數組指標、指標數組、函數指標的核心概念