//用列指针(指向一个元素的指针)和行指针两种方式对二维数组元素进行遍历输出。
#include <iostream>
using namespace std;
void output_h(int (*p)[3],int n);
void output_l(int *p,int n);
int main()
{
int a[2][3]={1,2,3,4,5,6};
output_h(a,2);
output_l(a[0],6);
return 0;
}
void output_h(int (*p)[3],int n)
{
int i=0,j=0;
cout<<"行指针方式遍历输出为:";
for(i=0;i<2;i++)
for(j=0;j<3;j++)
{
cout<<*(*(p+i)+j)<<" ";
cout<<endl;
}
void output_l(int *p, int n)
{
int i;
for(i=0;i<2;i++)
{
cout<<*(p+i)<<" ";
if((i+1)%4==0)
cout<<endl;
}
}
/*#include <iostream>
using namespace std;
void output_Subscript(int p[][4],int n);
void output_Line(int p[][4],int n);
void output_Column(int *p,int n);
int main()
{
int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
cout<<"(1)下标法进行二维数组输出"<<endl;
output_Subscript(a,3);
cout<<"(2)行指针法进行二维数组输出"<<endl;
output_Line(a,3);
cout<<"(3)列指针法进行二维数组输出"<<endl;
output_Column(a[0],12); // output_Column(&a[0][0],12);
return 0;
}
void output_Subscript(int p[][4],int n) //用二维数组下标形式输出
{
int i,j;
for(i=0;i<n;i++)
{ for(j=0;j<4;j++)
cout<<p[i][j]<<" ";
cout<<endl;
}
}
void output_Line(int p[][4],int n) //用行指针形式输出二维数组
{
int i,j;
for(i=0;i<n;i++)
{ for(j=0;j<4;j++)
cout<<*(*(p+i)+j)<<" ";
cout<<endl;
}
}
void output_Column(int *p,int n) //用列指针形式输出二维数组
{
int i;
for(i=0;i<n;i++)
{ cout<<*(p+i)<<" ";
if((i+1)%4==0)
cout<<endl;
}
}
*/
#include<iostream>
using namespace std;
int main()
{ void lie(int*p );
int a[3][4]={{11,22,33,44},{56,67,78,89},{70,80,90,100}};
lie(a[0]);
return 0;
}
void lie(int *p)
{ int a[3][4]={{11,22,33,44},{56,67,78,89},{70,80,90,100}};
cout<<"列指针遍历输出为:"<<endl;
for(p=a[0]+0;p<(a[0]+12);p++)
cout<<*p<<" ";
cout<<endl;
}
(2)行指针遍历输出
#include<iostream>
using namespace std;
int main()
{ void hang(int (*p)[4]);
int a[3][4]={{11,22,33,44},{56,67,78,89},{70,80,90,100}};
hang(a);
return 0;
}
void hang(int (*p)[4])
{ int i,j;
cout<<"行遍历输出为"<<endl;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
cout<<*(*(p+i)+j)<<" ";
cout<<endl;
}