按行序存储
❶ 对于二维数组,有行优先顺序和什么两种不同的存储方式
对于二维数组,有行优先顺序和列优先顺序两种不同的存储方式。
二维数组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 个字节。
(1)按行序存储扩展阅读:
数组中的各元素的存储是有先后顺序的,它们在内存中按照这个先后顺序连续存放在一起。数组中的所有元素都具有相同类型(和结构类中的字段不同,它们可以是不同类型)。数组中的元素存储在一个连续性的内存块中,并通过索引来访问(和结构类中的字段不同,它们通过名称来访问)。
在增加数组的维数时,数组所占的存储空间会大幅度增加,所以要慎用多维数组。使用 Variant 数组时更要格外小心,因为他们需要更大的存储空间。
❷ 内存中,数组是按行存储还是按列存储
在c语言中,二维数组元素在内存中的存放顺序是(按行存放)即在内存中线顺序存放第一行的元素,再存放第二行的元素。
❸ 用压缩存储方式,以行序为主存储,a11 为第一元素,其存储地址为1,每个元素占一
1、由于对称性a85与a58是相同的,由于按照行存储,第一行存储10个;第二行存储9个,开始元素为a22;第三行存储8个,开始元素为a33;……;第五行开始元素为:a55,所以a58在地四个 故 总的存储为:10+9+8+7+4=38 2、由于3^5=243,3^6=243*3>244,所以为6层
❹ c语言一个9x9的二维数组,按行序为主的存储方式进行存储,则第24个元素是怎么算
int main()
{
int shuzu[9][9];
int i = 0,j=0;
for (i = 0;i<9;i++)
{
for (j = 0;j<9;j++)
{
shuzu[i][j] = i*9+j+1;//1--99
}
}
printf("第24个元素是%d,在第%d行,第%d列",shuzu[24/9][24%9],24/9,24%9);
return 0;
}
执行结果
❺ C++ 二维数组按行序存储和按列序存储谁更好
其实都一样,但是由于windows编程一直采用的按行排列方式,所以在C++中建议按行存储;也有的编程软件就是用的按列,如MATLAB