//程序1:
#include <iostream.h>
void main()
{
int line1[3]={1,0,0};
int line2[3]={0,1,0};
int line3[3]={0,0,1};
int *p_line[3]; //指针数组
p_line[0]=line1;
p_line[1]=line2;
p_line[2]=line3;
cout<<"Matrix test:"<<endl;
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{cout<<p_line[i][j]<<" ";} //通过给一维指针数组赋值后,可以以二维数组的方式访问几个长度相等的一维数组;
cout<<endl;
}
}
//程序2:
#include <iostream.h>
void main()
{
int array[2][3]={{11,12,13},{21,22,23}};
for(int i=0;i<2;i++)
{
cout<<*(array+i)<<endl;
for(int j=0;j<3;j++)
{cout<<*(*(array+i)+j)<<" ";}
cout<<endl;
}
}
//解析:数组array是一个二维数组(2行3列),可以首先将其看成一个一维指针数组array[2],它有两个元素
//,即二维数组的行数,array[0]和array[1]分别代表二维数组第0行和第1行的首地址。而二维数组的每一行
//就相当于一个具有3个元素的一维int数组。
// array[i][j]被编译器翻译为*(*(array+i)+j)
//可以这样理解:数组array[i]是一个指针数组,有i个元素,array为其首地址,所以(array+i)是一个指针
//其内容*(array+i)也是一个指针,因此(*(array+i)+j)为指针,指向array[i][j]