使用列指针输出二维数组元素
1个回答
2013-05-25
展开全部
首先说明一下什么是列指针。
在C语言中,数组是不同于普通变量的,实际上C定义的数组是指向该数组第一个元素的指针。这是第一个概念,即数组名就是指针,所以可以直接当做指针来用,例如:对于一个数组a[],要取其第三个元素的值,既可以用a[2],也可以用a+2来访问。
对于一个二维数组,如果用下标变量来表示的话,则可以理解为:第一个下标变量指向该变量对应的行,第二个下标变量指向行内对应的一个元素。如下所示,
第i行: a[i][0] a[i][1] a[i][2] ...... a[i][j]
如果将首行视为一个特殊的元素,这个“特殊的”元素是一个一维数组。那么二维数组a[M][N]是由M个“特殊的”元素组成的一个“特殊的”一维数组。
a是这个“特殊的”一维数组的名称,是首地址,也是第一个元素的地址,也是第一行的首地址,是指首行一整行,并不是指某个具体元素。那么我们称之为“行指针”。同理:a+0,a+1,a+2,都是行指针。
接下来,我们放大来观看首行,首行的元素分别是:a[0][0], a[0][1], a[0][2],..., a[0][N]。将其看作一个独立的一维数组,那么a[0]就是这个数组的名称,也就是这个数组的首地址,也就是第一个元素的地址,也就是a[0]+0。a[0]和a[0]+0都是指具体的元素,那么我们称之为“列指针”。
总结一下:
行指针指的是一整行,不指向具体元素;列指针指的是一行中某个具体元素。
既然是指针,当然就会遵照指针的一些操作规则,总结下来,行指针与列指针之间的转换关系为:
*行指针 —— 列指针
&列指针 —— 行指针
下面言归正传,给出一个用列指针输出二维数组的例子:
#include <stdio.h>
void main()
{
int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
int *p= a[0]; // 列指针的定义法
for(; p < a[0] + 12; p++)
{
printf("%d ",*p);
}
return;
}
在C语言中,数组是不同于普通变量的,实际上C定义的数组是指向该数组第一个元素的指针。这是第一个概念,即数组名就是指针,所以可以直接当做指针来用,例如:对于一个数组a[],要取其第三个元素的值,既可以用a[2],也可以用a+2来访问。
对于一个二维数组,如果用下标变量来表示的话,则可以理解为:第一个下标变量指向该变量对应的行,第二个下标变量指向行内对应的一个元素。如下所示,
第i行: a[i][0] a[i][1] a[i][2] ...... a[i][j]
如果将首行视为一个特殊的元素,这个“特殊的”元素是一个一维数组。那么二维数组a[M][N]是由M个“特殊的”元素组成的一个“特殊的”一维数组。
a是这个“特殊的”一维数组的名称,是首地址,也是第一个元素的地址,也是第一行的首地址,是指首行一整行,并不是指某个具体元素。那么我们称之为“行指针”。同理:a+0,a+1,a+2,都是行指针。
接下来,我们放大来观看首行,首行的元素分别是:a[0][0], a[0][1], a[0][2],..., a[0][N]。将其看作一个独立的一维数组,那么a[0]就是这个数组的名称,也就是这个数组的首地址,也就是第一个元素的地址,也就是a[0]+0。a[0]和a[0]+0都是指具体的元素,那么我们称之为“列指针”。
总结一下:
行指针指的是一整行,不指向具体元素;列指针指的是一行中某个具体元素。
既然是指针,当然就会遵照指针的一些操作规则,总结下来,行指针与列指针之间的转换关系为:
*行指针 —— 列指针
&列指针 —— 行指针
下面言归正传,给出一个用列指针输出二维数组的例子:
#include <stdio.h>
void main()
{
int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
int *p= a[0]; // 列指针的定义法
for(; p < a[0] + 12; p++)
{
printf("%d ",*p);
}
return;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询