指針數組


1、   int *p[10];                  //指針數組,含有10個指針元素 


         也就是說每一個元素都是指針。

先是解析[]表示它是一個數組,然后*表示指針,int表示為int型指針,  

    即表示定義一個指針數組,含有10個int類型指針元素。

 

   可以這樣初始化:

   for(int i=0; i<10;i++)

{

     p[0] = &i;  // 每個元素都是指針

 

}

 

 

 

2、與int * q 進行對比

                int * q ;              //表示 q是指向 int的一個指針,即只是一個指針。

 

但是如果 q 指向一個數組的首地址,那么可以用 q[] 這樣的形式來訪問數組的元素。

如下:

      int students[] = { 101, 102, 103, 104, 105, 0, 0, 0, 0, 0, 201, 202,203, 204, 0, 0, 0, 0, 0, 0, 301, 302, 303, 0, 0, 0, 0, 0, 0, 0 };

                  int * q = students;

                  cout << q[0]<<endl;       // 輸出 101

 

3、對上面進行總結

    p[0] 是一個指向int的地址,   q[0] 是一個int 值

 

 

 

4、對指針數組進行引申

   int * p[10]  這種 是針對基礎數據類型的。

實際情景下,數組里面存儲的 是指向自定義結構體、類的指針。

  舉例如下:

     IndexItem *g_indexItem[3]; //元素是指針

初始化:

(1)正確

     g_indexItem[0] = new IndexItem(1, 0, 5);
    g_indexItem[1] = new IndexItem(2, 10, 4);
    g_indexItem[2] = new IndexItem(3, 20, 3);

 

(2)錯誤

  g_indexItem = {new IndexItem(1, 0, 5),new IndexItem(2, 10, 4),new IndexItem(3, 20, 3); }

 這種應該是可以的,但是在VS 下編譯確實報錯了。

 

(3)錯誤

    g_indexItem = NULL;

   會報 0 不能轉換為 IndexItem 類型指針。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM