二维数组存储方式和使用

您所在的位置:网站首页 二维数组在内存中的存储顺序 二维数组存储方式和使用

二维数组存储方式和使用

2024-07-13 09:07:59| 来源: 网络整理| 查看: 265

--------------------------------------------------------------------------------------------------------------------------------

目录:

 第一部分:二维数组在内存中的存储方式

 第二部分:二维数组作为函数形参的使用

---------------------------------------------------------------------------------------------------------------------------------

                                                        第一部分:二维数组在内存中的存储方式

      对于二维数组,首先需要知道它在内存中是以怎样的方式来存储的,引用以下博客的内容说明:http://blog.csdn.net/dhl0317/article/details/5471601

  二维数组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]

在PASCAL和C语言中数组按行优先顺序存储。

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语言中,数组按列优先顺序存储。

                                       第二部分:二维数组作为函数形参的使用

对于二维数据作为函数形参的使用,可以使用以下几种方式。先科普一下指针和二维数组的关系:

例如:int a[3][5]

(a+i) 代表是整个第i行的地址 *(a+i)就表示第i行首元素的地址*(a+i) + j ===> & a[i][j]*( *(a+i) + j) ===>a[i][j]元素的值

test_func1()/test_func2()/test_func3()这3个函数的执行结果是相同的。 test_func3()函数是根据二维数组在内存中的存储方式实现,使用时要特别注意。 1 #include 2 3 //void test_func1(unsigned char i, unsigned char ary[][3]) 4 void test_func2(unsigned char i, unsigned int (*ary)[3]) 5 { 6 unsigned int i_x, i_y , temp =0; 7 for(i_y = 0; i_y < i; i_y++) 8 { 9 for(i_x = 0; i_x < 3; i_x++) 10 { 11 ary[i_y][i_x] = temp; 12 temp++; 13 } 14 } 15 } 16 void test_func3(unsigned int *ptr_array) 17 { 18 unsigned int i_x, temp =0; 19 for(i_x = 0; i_x < 6; i_x++) 20 { 21 *ptr_array = temp; 22 ptr_array++; 23 temp++; 24 } 25 } 26 //------------------------------------------------------------ 27 int main(void) 28 { 29 unsigned int m,n; 30 unsigned int array_A[2][3]; 31 //test_func1(2, array_A); 32 test_func2(2, array_A); 33 //test_func3(&array_A[0][0]); 34 for(m = 0; m < 2; m++) 35 { 36 for(n = 0; n < 3; n++) 37 { 38 printf("array_A[%d][%d]: %d \n", m, n, array_A[m][n]); 39 } 40 } 41 }

 



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭