二维数组的存储方式及其作为参数的方法

二维数组的存储方式及其作为参数的方法

二维数组A[m][n]可以视为由m个行向量组成的向量,或者是由n个列向量组成的向量。

由于计算机的内存是一维的,多维数组的元素应排成线性序列后存入存储器。数组一般不做插入和删除操作,即结构中元素个数和元素间的关系不变。所以采用顺序存储方法表示数组。

1、  行优先存储

将数组元素按行向量排列,第i+1个行向量紧接在第i个行向量后面。

【例】二维数组A[m][n]按行优先存储的线性序列为:

A[0][0]A[0][1]…A[0][n]A[1][1]A[1][1]…A[1][n]…A[m][n]A[m][1]…A[m][n]

PASCALC语言中数组按行优先顺序存储。

2、  列优先存储

将数组元素按列向量排列,第i+1个列向量紧接在第i个列向量后面。

【例】二维数组A[m][n]按列优先存储的线性序列为:

A[0][0]A[1][0]…A[m][0]A[0][1]A[1][1]…A[m][1]…A[m][1]A[0][n]…A[m][n]

ORTRAN语言中,数组按列优先顺序存储。

 

1、下面以C语言为例,进行说明

 

 

在我电脑上的执行结果为:

 

0x0012FF60   0x0012FF64

0x0012FF68   0x0012FF6C

0x0012FF70   0x0012FF74

由此可以看出二维数组的存储是线性存储。

2C语言中还有个语法需要注意,数组的名字就是数组第一个元素的地址。

还以上例为例:

 

运行结果为:

arr = 0x0012FF60

arr[0] = 0x0012FF60

&arr[0][0] = 0x0012FF60

3、现在说明一种二维数组作为函数参数的方法。

数组在内存中是线性存放的,所以这里可以将二维数组的地址传给函数,函数中用地址来操作二维数组。

方法如下:

 

 

 

运行结果为:

 

arr = 0x0012FF60

arr[0] = 0x0012FF60

&arr[0][0] = 0x0012FF60

0x0012FF60   0x0012FF64

0x0012FF68   0x0012FF6C

0x0012FF70   0x0012FF74

 

0x0012FF60   0x0012FF64

0x0012FF68   0x0012FF6C

0x0012FF70   0x0012FF74

1   2

3   4

5   6

Press any key to continue

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值