#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;