⑴ 在c语言中,二维数组数据的存储形式。不准用百度里的话回答;要用自己的话简明扼要的回答,而且还要有特点
二维数组分两种.一是如int arr[10][5];这样定义的.另一种是用malloc形式定义的.第二种比较复杂一些,你或许暂时不用太了解.第一种的话,一般是连续分配的,按行优先顺序或列优先顺序对存储单元进行编号.arr[0][4]后面一个元素就是arr[1][0],就是这个情况.如果是列优先排列的话,arr[9][0]后面一个元素是arr[0][1];一般都实现为前者(行优先).其实就好比把一个数组给折叠起来了.
对于malloc申请的,可能就会是不连续的了.它会要求先申请一个一维数组,里面存的都是指针,然后为每个指针再申请一个一维数组,这样就构成了一个二维数组了.这种不保证连续.当然 你也可以手工构造连续的数组空间.那就比较麻烦些了.
⑵ 二维数组在内存中是如何存储的
二维数组在内存中是如何存储的,这不是一定的,具体要看编译系统是如何规定的。
对于多数编译系统而言,都是采用“行优先”的策略,比如一个int a[5][3]数组,它是从首地址开始依次是a[0][0],a[0][1],a[0][2],然后是a[1][0],a[1][1],a[1][2],……。直到最后是a[4][0],a[4][1],a[4][2]。
⑶ matlab中多维数组存储方式
1.一个三维数组由行、列和页三维组成,其中每一页包含一个由行和列构成的二维数组。
2.利用标准数组函数创建多维数组
A=zeros(4,3,2) 生成一个4行3列2页的三维全0数组,ones,rand和randn等函数有相似的用法。
3.利用直接索引方式生成多维数组
A=zeros(2,3)
A(:,:,2)=ones(2,3)
A(:,:,3)=4
上面的代码先生成一个二维数组作为三维数组的第一页,然后通过数组直接索引,添加第二页、第三页。
⑷ 对于二维数组,有行优先顺序和什么两种不同的存储方式
对于二维数组,有行优先顺序和列优先顺序两种不同的存储方式。
二维数组A[m][n],这是一个m行n列的二维数组。设a[p][q]为A的第一个元素,即二维数组的行下标从p到m+p,列下标从q到n+q,按“行优先顺序”存储时则元素a[i][j]的地址计算为:LOC(a[i][j]) = LOC(a[p][q]) + ((i − p) * n + (j − q)) * t。
按“列优先顺序”存储时,地址计算为:LOC(a[i][j]) = LOC(a[p][q]) + ((j − q) * m + (i − p)) * t。存放该数组至少需要的单元数为(m-p+1) * (n-q+1) * t 个字节。
(4)二维或多维存储扩展阅读:
数组中的各元素的存储是有先后顺序的,它们在内存中按照这个先后顺序连续存放在一起。数组中的所有元素都具有相同类型(和结构类中的字段不同,它们可以是不同类型)。数组中的元素存储在一个连续性的内存块中,并通过索引来访问(和结构类中的字段不同,它们通过名称来访问)。
在增加数组的维数时,数组所占的存储空间会大幅度增加,所以要慎用多维数组。使用 Variant 数组时更要格外小心,因为他们需要更大的存储空间。
⑸ c语言中,一位数组的逻辑结构是(),存储结构式();对二维数组或多维数组分哪两种存储方式
对二维数组或多维数组分行优先和列优先两种存储方式
一位数组的逻辑结构是顺序存储结构
⑹ 二维数组是如何存储的
二维数组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语言中,数组按列优先顺序存储。
⑺ c语言问题:c语言中二维数组在内存中怎样存储
严格意义上说不存在二维数组,只是数组里的每个元素是一个一维数组,而内存是一段连续的空间,根据你申请一个变量的顺序按地址从低到高排,所以二维数组不可能像一个矩阵那样在内存中排列,这就涉及到它是按行依次往下排,还是按列往下排,而在c++中是按行,既 int a[2][2]
a[0][0]
a[0][1]
a[1][0]
a[1][1]
⑻ 怎么储存二维数组
二维数组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语言中,数组按列优先顺序存储。
⑼ 多维数组在里计算机中内存中存放方式为什么
一般地,是按行顺序存放。 但也有例外,早期的 fortran 语言 二维数组是按列存储。