概述
我们知道,一维空间是一条线,数学中用一条数轴来表达;二维空间是一个平面,数学中用平面坐标系来表达。那么二维数组又是什么样的呢?
线与面
我们用一个下标来描述一维数组中的某个元素,就好像在用数描述一条线上的点。而所有的数据都是存储在一条线上。如果我们采用两个下标,就能形成一个平面,犹如一张表格,有行有列,所有的数据就能够存放到表格里。
我们把二维数组的两个下标分别称为行下标和列下标,在前面的是行下标,在后面的是列下标。那么什么时候要用二维数组呢?一般有两种情况,一种是描述一个二维的事物。比如用1表示墙,用0表示通路,我们可以用二维数组来描述一个迷宫地图;用1表示有通路,0表示没有通路,我们可以用二维数组来描述几个城市之间的交通情况。还有一种是描述多个具有多项属性的事物。比如有多个学生,每个学生有语文、数学和英语三门成绩,我们就可以用二维数组来描述。对于第二种情况,我们要注意各项属性应该是同一种数据类型,比如三种学科的成绩都是整数。如果出现了姓名(字符串属性),就不能将他们组合到一个二维数组里去。所以不要企图将不同数据类型的属性整合到一个二维数组中去。
二维数组的声明和初始化
二维数组的声明和一维数组是类似的,不同之处只是多了一个下标: 数据类型数组名[行数][列数];要注意,二维数组的下标也都是从0开始的。二维数组的初始化分为两种,一种是顺序初始化,一种是按行初始化,我们来看一段程序,就能够对它们有所了解了:(程序7.4.1)#include “iostream.h”#include “iomanip.h”int main(){ int array1[3][2]={4,2,5,6};//顺序初始化 int array2[3][2]={{4,2},{5},{6}};//按行初始化 cout <<”array1” <
#include "iostream.h"
#include "iomanip.h"
void disp(int a[][2],int r,int c);//告知数组的列数
int main(){
int array[3][2]={4,2,5,6,3,1};
cout <<"array" <<endl;
disp(array,3,2);
return 0;
}
void disp(int a[][2],int r,int c){
for (int i=0;i<a.length();i++) {
for (int j=0;j<a[i].length();j++) {
cout <<setw(2) <<a[i][j];
cout <<endl; }}
运行结果:array4 25 63 1
二维数组转化成一维数组
有些时候,我们觉得用二维数组来描述一样事物很方便。比如我们用二维数组来画一个迷宫地图,行下标和列下标就如同直角坐标系一样。可是在某些情况下,不能使用二维数组,或者难以制造一个二维数组。二维数组在内存中的存储情况和一维数组是相同的,所以我们只好用一个一维数组来代替它了。
于是,我们不难总结出一个结果,一个二维数组元素a[x][y]在一维数组b中,是: a[x][y]=b[x*列数+y]
最后
以上就是直率大地为你收集整理的二维数组(未完?)二维数组的声明和初始化二维数组转化成一维数组的全部内容,希望文章能够帮你解决二维数组(未完?)二维数组的声明和初始化二维数组转化成一维数组所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复