多维数组的运用

##多维数组
###二维数组的运用
####定义的一般形式
类型说明符 数组名[常量表达式][常量表达式]
例如:
float a[3][4],b[5][10];
定义a为3行4列的数组,b为5行10列的数组。
注意,不能写成:
float a[3,4],b[5,10]
在一个括号内写两个下标,错误。

可以把二维数组看成一维数组,有3个元素:
a[0],a[1],a[2]
每一个元素又是包含4个元素的一维数组:
a[0]———a[0][0] a[0][1] a[0][2] a[0][3]
a[1]———a[1][0] a[1][1] a[1][2] a[1][3]
a[2]———a[2][0] a[2][1] a[2][2] a[2][3]
即可以把a[0],a[1],a[2]看作3个数组的名字,上面定义的二维数组相当于
float a[0][4],a[1][4],a[2][4];

C语言中,二维数组中元素排列的顺序是按行存放的,即在内存中先按顺序存放第1行的元素,接着再存放第2行的元素……

多维数组的定义
例如三维数组:
float a[2][3][4]; //定义三维数组,它有2页,3行,4列
多维数组在内存中的排列顺序为:第1维的下标变化最慢,最右边的下标变化最快。
####引用二维数组的元素
二维数组元素的表示形式为
数组名[下标][下标]
例如,a[2][3]表示a数组中序号为2的行中序号为3的列的元素。
注意

  1. 下标应是整型表达式,如a[2-1][2*21],不要写成a[2,3]形式。
  2. 数组元素可以出现在表达式中,也可以被赋值,例如:
    b[1][2]=a[2][3]/2
  3. 在引用数组元素时,下标值应在已定义的数组大小的范围内。
    定义数组时,a[3][4]来定义数组的维数和各维的大小;引用元素时,a[3][4]中的3和4是数组元素的下标值。
    ####二维数组的初始化
    可以用“初始化列表”对二维数组初始化:
    (1)分行给二维数组赋初值
    int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
    这种赋初值方法比较直观,把第1个花括号内的数据给第1行的元素,第2个花括号内的数据给第2行的元素……即按行赋初值。
    (2)可以对部分元素赋初值

int a[3][4]={{1},{5},{9}};
它的作用是只对各行第1列(即序号为0的列)的元素赋初值,其余元素值自动为0。
赋值后数组各元素为
1 0 0 0
5 0 0 0
9 0 0 0

也可以对各行中某一元素赋初值,例如:
int a[3][4]={{1},{0,6},{0,0,11}};
初始化后的数组元素如下
1 0 0 0
0 6 0 0
0 0 11 0
这种方法对非0元素少时用比较方便,不必将所有的0都写出来,只需输入少量数据。

也可以对某几行元素赋初值:
int a[3][4]={{1},{5,6}};
数组元素为
1 0 0 0
5 6 0 0
0 0 0 0
第3行不赋初值
也可以对第2行不赋初值,例如:
int a[3][4]={{1},{},{9}};
(4)对全部元素都赋初值(即提供全部初始数据)
则定义数组时对第1维的长度可以不指定,但第2维的长度不能省。例如:
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
与下面的定义等价
int a[ ][4]={1,2,3,4,5,6,7,8,9,10,11,12};
系统会根据数据总个数和第2维的长度算出第1维的长度。

在定义时也可以只对部分元素赋初值而省略第1维的长度,但应分行赋初值。例如:
`int a[ ][4]={{0,0,3},{ },{0,10};
*这样的写好,能通知编译系统,数组共有三行。TOC](这里写自定义目录标题)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值