#include<iostream.h>
/*void main()
{
void *p;
float x=5;
p=&x;
cout<<p<<endl;
}*/
//p[i*n+j]=a[i][j],用一维指针表示二维数组
/*void main()
{
int a[4][3]={{1,2,3},{4,5,6},{7,8,9},{10,11,12}};
int *p;
p=&a[0][0];//或者p=a[0]
cout<<p[0*3+0]<<p[0*3+1]<<p[0*3+2]<<endl;
cout<<p[1*3+0]<<p[1*3+1]<<p[1*3+2]<<endl;
}*/
void main()
{
int a[4][3]={{1,2,3},{4,5,6},{7,8,9},{10,11,12}};
int (*p)[3];//*p表示存放有3个元素的指针首地址
p=a;
cout<<p[0][0]<<p[0][1]<<p[0][2]<<endl;
cout<<p[1][0]<<p[1][1]<<p[1][2]<<endl;
//一般方法
cout<<*(*a)<<*(*a+1)<<*(*a+2)<<endl;
cout<<*(*(a+1)+0)<<*(*(a+1)+1)<<*(*(a+1)+2)<<endl;
cout<<a[0][0]<<a[0][1]<<a[0][2]<<endl;
cout<<a[1][0]<<a[1][1]<<a[1][2]<<endl;
}
//最经典的是用指针数组,显然,指针数组含义就是用来存放指针的数组
void main()
{
int *a[4];
//int b[3][4]={{1,2,3}{4,5,6}{7,8,9}{10,11,12}}另一种方法
//a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];
int b0[]={1,2,3},b1[]={4,5,6},b2[]={7,8,9},b3[]={10,11,12};
a[0]=b0;
a[1]=b1;
a[2]=b2;
a[3]=b3;
cout<<a[0][0]<<a[0][1]<<a[0][2]<<endl;
cout<<a[1][0]<<a[1][1]<<a[1][2]<<<endl;
int **p;
p=a;
cout<<p[0][0]<<p[0][1]<<p[0][2]<<endl;
}