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