1. 程式人生 > >C++——指標2-指向陣列的指標和指標陣列

C++——指標2-指向陣列的指標和指標陣列

7.4 指向陣列元素的指標

宣告與賦值

例:int a[10], *pa;

    pa=&a[0]; 或 pa=a[p1] ;

通過指標引用陣列元素,經過上述宣告及賦值後:

*pa就是a[0],*(pa+1)就是a[1],... ,*(pa+i)就是a[i].

a[i], *(pa+i), *(a+i), pa[i]都是等效的。不能寫 a++,不能給陣列名賦值或者試圖改變其值,因為a是陣列首地址是常量。

例子:使用三種方法輸出陣列元素

使用陣列名和下標

使用陣列名指標運算

使用指標變數

int main()

{   int a[10];   int i;

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

     cin>>a[i];

   cout<<endl;

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

     cout<<a[i];}

int main()

{   int a[10];   int i;

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

      cin>>a[i];

   cout<<endl;

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

     cout<<*(a+i);}

int main()

{   int a[10];   int *p, i

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

        cin>>a[i];

   cout<<endl;

   for(p=a; p<(a+10); p++)

        cout<<*p;}

7.5 指標陣列

指標陣列的元素是指標型,例如:point *pa[2];由pa[0] ,pa[1]兩個指標組成。

#include <iostream>

using namespace std;

int main()

{

         int line1[]={1,0,0};      //宣告陣列,矩陣的第一行

         int line2[]={0,1,0};      //宣告陣列,矩陣的第二行

         int line3[]={0,0,1};      //宣告陣列,矩陣的第三行

        

         int *p_line[3];     //宣告整型指標陣列

         p_line[0]=line1; //初始化指標陣列元素

         p_line[1]=line2;

         p_line[2]=line3;

        

         cout<<"Matrix test:"<<endl;         //輸出單位矩陣

         for(int i=0;i<3;i++)     //對指標陣列元素迴圈

         {

             for(int j=0;j<3;j++)      //對矩陣每一行迴圈

             {   cout<<p_line[i][j]<<" ";   }

             cout<<endl;

         }

}

 

  

#include <iostream>

using namespace std;

int main()

{

         int array2[2][3]={{11,12,13},{21,22,23}};     //宣告二維int型陣列

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

      {

             cout<<*(array2+i)<<endl;   //輸出二維陣列第i行的首地址

             for(int j=0;j<3;j++)

          {  cout<<*(*(array2+i)+j)<<" ";    }       //逐個輸出二維陣列第i行元素值

//寫成 {  cout<<*array2[i][j]<<" ";  }比較好。

             cout<<endl;

         }

  

}//輸出結果為:

0X0065FDE0

11,12,13

0X0065FDEC

21,22,23