二维数组(未完?)
来源:互联网 发布:windows软件下载 编辑:程序博客网 时间:2024/05/06 02:20
我们知道,一维空间是一条线,数学中用一条数轴来表达;二维空间是一个平面,数学中用平面坐标系来表达。那么二维数组又是什么样的呢?
线与面
我们用一个下标来描述一维数组中的某个元素,就好像在用数描述一条线上的点。而所有的数据都是存储在一条线上。如果我们采用两个下标,就能形成一个平面,犹如一张表格,有行有列,所有的数据就能够存放到表格里。
我们把二维数组的两个下标分别称为行下标和列下标,在前面的是行下标,在后面的是列下标。那么什么时候要用二维数组呢?一般有两种情况,一种是描述一个二维的事物。比如用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]
- 二维数组(未完?)
- cuda二维数组从host到device(未完待续)
- 后缀数组(未完待续)
- 指针与数组(未完)
- 数组(2)二维数组
- 数组(十)--二维数组
- 二维数组(温习)
- (十三)、二维数组
- 树状数组(二维)
- python 数组相关知识总结(未完)
- 树状数组和线段树(未完)
- 树状数组小结(未完待续)
- 单链表的数组实现(未完)
- 二维数组的初始化(二维数组的赋值)
- 静态二维数组和动态二维数组(C语言)
- openjudge 二维数组右上坐下遍历(二维数组)
- 二维数组的初始化(二维数组的赋值)
- 二维数组练习(二维数组+for+if...else)
- J-link V8固件升级及克隆版破解向导(系统WIN10)
- 黑马程序员——面向对象
- MAC使用brew安装nginx+php+mysql环境
- https://projecteuler.net/problem=5
- python入门经典(一)
- 二维数组(未完?)
- 1101. Quick Sort (25)
- iptables详解
- 兔子问题 素数 水仙花数 三个经典C程序的解答 C知识回顾第一天
- maven常用插件总结
- 欢迎使用CSDN-markdown编辑器
- 两张(多张)图片合成一张图片
- 1102. Invert a Binary Tree (25)
- IntelliJ IDEA JRebel Maven Tomcat 实现热部署