關於多維數組的問題

#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;


int main()

{

int a[3][4];
for(int i=0;i<3;i++)
for(int j=0;j<4;j++)
a[i][j]=i*4+j;
int (*p)[4]=a;
cout<<*(p[2]+3)<<endl;

cout<<*(*(p+2)+3);
}

輸出結果如下

11

11

分析:*p是指向一個int【4】數組的一個指針,那麼p[1]或者*(p+1)指向第二個int【4】。要輸出多維數組裏的字符,需要用第二次解引用。*(*(p+1)+1)

可以這麼理解嗎:p--->{x1,x2,x3,x4},{y1,y2,y3,y4}......,就是說p是這樣一個指針,使*p=int a[4]={x1,x2,x3,x4}

p[1]或者*(p+1)={y1,y2,y3,y4};(定義了一個指針後,可以使用【】和*(+)來取下一個值)

要想取到x1或者x2,需要再解引用。


一維數組裏char a[3];

數組名a指向第一個字符的指針,此時a=&a[0],(a+1)=&a[1];a[1]=*(a+1);

char *a="hello wrod";

*(a+1)=e;


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