C++數組指標、指標數組、函數指標的核心概念

來源:互聯網
上載者:User

標籤:三級指標   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 
  1. int *p[3];  
  2. p[0] = new int[4];  
  3. p[1] = new int[5];  
  4. p[2] = new int[6];  
  5.   
  6. delete p[0];  
  7. delete p[1];  
  8. 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++數組指標、指標數組、函數指標的核心概念

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.