C语言:通过指针数组P和一维数组a构成一个3*2的二维数组;并为a数组赋初值2,4,6,8......要求先按行的顺序输出此二维数组;然后再按列的顺序输出它。

首先我门要区分两个概念,指针数组和数组指针.
指针数组:存储指针的数组,即该数组内的元素都是指针.
数组指针:指向数组的指针.准确来说应该是指向数组首元素地址的指针。
而题目中设置的为指针数组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;
 }

猜你喜欢

转载自blog.csdn.net/RViewSonic/article/details/107135261