首先我门要区分两个概念,指针数组和数组指针.
指针数组:存储指针的数组,即该数组内的元素都是指针.
数组指针:指向数组的指针.准确来说应该是指向数组首元素地址的指针。
而题目中设置的为指针数组p,说明是想用这个指针数组p存储一维数组内元素的地址.
其次,分析两种输出,对于3*2的二维数组来说,按行输出即为正常的数组元素输出形式,而后按列输出的话举个例子来说,比如输出一第一个即a[0],而第二个元素就要是a[2],依次类推,用指针数组p可以直接按地址的移动来进行输出。
但要注意的是,第二列的输出开始之后要将p的指向改为数组第二个元素a[1].
完整代码如下:
#include<stdio.h>
int main()
{
int a[6]={2,4,6,8,10,12}; //定义一维数组a
int *p; //定义指针数组p
int i,j;
p=a;
printf("按行顺序输出:");
for(i=0;i<6;i++,p++)
{
printf("\n");
printf("%d",*p);
}
printf("\n按列顺序输出:\n");
p=a;
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
printf("%d\t",*p);
p=p+2;
}
printf("\n");
p=p-5;
}
return 0;
}