定义一个二维数组:
int A[3][2]={{1,2},{3,4},{5,6}};
A[0]、A[1]、A[2]是数组 A 第一行、第二行、第三行的起始地址,也就是说 A[0]=&A[0][0],A[1]=&A[1][0],A[2]=&A[2][0]。A[1]+1 表示第二行、第二列的地址,即 &A[1][1]。
利用指针,输出二维数组的元素(1):
//利用指针,输出二维数组的元素
#include<iostream>;
using namespace std;
void main()
{
int Matrix[5][5]={{1,0,0,0,0},
{0,1,0,0,0},
{0,0,1,0,0},
{0,0,0,1,0},
{0,0,0,0,1}};
int i,j,p;
for (i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
p=*(Matrix[i]+j);
cout<<p<<" ";
}
cout<<endl;
}
}
对于上例中的 Matrix[i] 可以看做是一维数组(即每一行的地址作为一个数组),那么Matrix[i] 还可以写成 *(Matrix+i) 的形式。因此二维数组中的元素 Matrix[i][j] 的地址还可以写成 *(Matrix+i)+j,于是Matrix[i][j] 就可以写成 *(*(Matrix+i)+j) ,同时也可写成 (*(Matrix+i))[j]。
利用指针,输出二维数组的元素(2):
//利用指针,输出二维数组的元素(2)
#include<iostream>;
using namespace std;
void main()
{
int Matrix[5][5]={{1,0,0,0,0},
{0,1,0,0,0},
{0,0,1,0,0},
{0,0,0,1,0},
{0,0,0,0,1}};
int i,j,p;
for (i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
p=*(*(Matrix+i)+j);
cout<<p<<" ";
}
cout<<endl;
}
}
利用指针,输出二维数组的元素(3):
//利用指针,输出二维数组的元素(3)
#include<iostream>;
using namespace std;
void main()
{
int Matrix[5][5]={{1,0,0,0,0},
{0,1,0,0,0},
{0,0,1,0,0},
{0,0,0,1,0},
{0,0,0,0,1}};
int i,j,p;
for (i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
p=(*(Matrix+i))[j];
cout<<p<<" ";
}
cout<<endl;
}
}