在c++中,很多萌新(包括小编)在做需要地图的程序时会用一个二维数组来当做地图,而在初二或往后的童鞋很可能会直接用 平面直角坐标系 的思维去理解二维数组的行和列:把X轴理解为列,而把Y轴理解为行。
小编在这里要郑重地告诉你:
这种想法是 错 误 的!!!
为了帮助大家理解,小编先讲一下平面直角坐标系。
平面直角坐标系
小编在这里大概地讲一下平面直角坐标系,具体(官方)讲解请点这里。
平面直角坐标系是在一个平面内有两条相互垂直且有公共原点的数轴,它们的公共原点O称为直角坐标系的原点。一般来说,在平面直角坐标系内,水平且正方向向右的数轴被称为X轴,而竖直且正方向向上的数轴被称为Y轴。

对于平面内任意一点C,过点C分别向X轴、Y轴作垂线,垂足在X轴、Y轴上的对应点a,b分别叫做点C的横坐标、纵坐标,有序数对(a,b)叫做点C的坐标。
C++中的二维数组
一般,我们在c++中定义一个二维数组是这样的:
数据类型 数组名[常量表达式1][常量表达式2] ;
例如,
int a[4][3];
这句话表示创建了一个有4个元素并且每个元素都为有3个元素的数组的数组。
是不是有点蒙?
上图:
有三个元素的数组
┌──────────┴─────────┐
┌a[0][0],a[0][1],a[0][2],
四个元素┤a[1][0],a[1][1],a[1][2],
│a[2][0],a[2][1],a[2][2],
└a[3][0],a[3][1],a[3][2]
图中可以看出,同平面直角坐标系中的坐标一样,二维数组的下标也是从0,0开始的。
二维数组与坐标
从上一节的图中可以看出,同平面直角坐标系中的坐标一样,二维数组的下标也是从0,0开始的。
可是,这 并不意味着 二维数组的下标和平面直角坐标系中的坐标是 一样的 。
比如在C++中,它是这样的:
int a[3][3];
a[0][0],a[0][1],a[0][2],
a[1][0],a[1][1],a[1][2],
a[2][0],a[2][1],a[2][2],
而在平面直角坐标系中,它是这样的:
(为了方便,这里暂时设Y轴的正方向为向下)
从图中可以看出,二维数组的[0][1] 不是 平面直角坐标系中的(0,1),而是(1,0)。
也就是说,在二维数组中,第一个数对应的其实是纵坐标,第二个数对应的其实是横坐标。
或者这么表示:
一些萌新可能有点蒙,但只要仔细想想,就能想通了!
这篇文章只是小编个人的一些想法,望各位猿老指正!
来源:CSDN
作者:Super_potato!
链接:https://blog.csdn.net/lsc0805/article/details/104081742