按行存储与按列存储顺序
‘壹’ 在c语言中,二维数组元素在内存中的存放顺序是 A按行存放 B按列存放 C由用户自己定义 D由编译器决定
二维数组在内存中按行存放。
二维数组在c语言中的定义为:int a[x][y]。具体理解为二维数组a,有x行数据,每行数据有y个。
解释:当我们在进行数据的存取时,在无x的条件下不可能取出值。但是在没有y的条件下,可以通过地址取出x行的某个值。
当我们知道x的值,代表我们能确定这一行的首地址,因为二维数组按照行存放,所以第x行的数据地址关系排列递增的。
反证法:如果二维数组按列存放,则我们知道y值,可以确定首地址的值,去进行值得存取。显然由于C语言不支持这样的方式,所以C语言中二维数组按照行存放。
(1)按行存储与按列存储顺序扩展阅读:
二维数组的输入:
int a[2][3];
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
{
cin>> a[i][j];
}
}

通过for循环确定x的值,在通过for循环确定y的值。
‘贰’ 三维数组按照列主序存放元素是按照列行层排列吗
三维数组按照列主序存放元素是按照列行层排列。三维数组按照列主序存放元素就是以列序为主,即先列后行,按照行号从小到大的顺序,依次存储每一列的元素。三维数组,是指维数为三的数组结构,三维数组是最常见的多维数组,由于其可以用来描述三维空间中的位置或状态而被广泛使用。
‘叁’ 数据结构的数组中,以行为优先和以列为优先分别是怎样存储的,怎么计算
Am*n L(字节)
行:Loc(i,j)=Loc(0,0)+(i*n+j)*L
Loc(i,j)=Loc(1,1)+((i-1)*n+i-1)*L
列:Loc(i+j)=Loc(0,0)+(j*m+i)*L
Loc(i,j)=Loc(1,1)+((i-1)*m+i-1)*L
‘肆’ 内存中,数组是按行存储还是按列存储
在C语言中,二维数组元素在内存中的存放顺序是(按行存放)即在内存中线顺序存放第一行的元素,再存放第二行的元素。
‘伍’ 对于二维数组,有行优先顺序和什么两种不同的存储方式
对于二维数组,有行优先顺序和列优先顺序两种不同的存储方式。
二维数组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 个字节。

(5)按行存储与按列存储顺序扩展阅读:
数组中的各元素的存储是有先后顺序的,它们在内存中按照这个先后顺序连续存放在一起。数组中的所有元素都具有相同类型(和结构类中的字段不同,它们可以是不同类型)。数组中的元素存储在一个连续性的内存块中,并通过索引来访问(和结构类中的字段不同,它们通过名称来访问)。
在增加数组的维数时,数组所占的存储空间会大幅度增加,所以要慎用多维数组。使用 Variant 数组时更要格外小心,因为他们需要更大的存储空间。
‘陆’ 数据结构数组以行为主序与以列为主序的关系是什么
行主序存储和列主序存储可简单理解为:
行主序存储顺序[0,1] [0,2] ... [0,10] [1,1] [1,2] ... [8,5] ... [8,9] [8,10]
列主序存储顺序[0,1] [1,1] ... [8,1] [0,2] ... [7,10] [8,10]
一行10元素 一列9元素
行下标起始为0 列下标起始为1 所以[8,5]是第10*8+5=85位元素
按列主序来的话就是85/9=9 mod 4 就是位于第4行第9列
行下标起始为0 列下标起始为1 所以就是[3,10]了
实在不懂 你画个9*10的表格 数数就明白了
‘柒’ C++ 二维数组按行序存储和按列序存储谁更好
其实都一样,但是由于windows编程一直采用的按行排列方式,所以在C++中建议按行存储;也有的编程软件就是用的按列,如MATLAB
