关于多维数组的问题

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


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