二维数组的元素在内存中的存储顺序是逐行的。
访问数据时,如果没有x,则无法检索到值。但如果没有y,则可以通过地址输出x行的某个值。当x的值已知时,就意味着可以确定该行的首地址,因为二维数组是按行存储的,而x行的数据地址关系是按升序排列的。
如果二维数组按列存储,则y的值已知,并且可以确定首地址的值以进行有价值的访问。显然,由于C不支持这种方法,所以C中的二维数组是按行存储的。
扩展信息
常用二维数组第一种表示方法是二维正则矩阵表示方法。
第二种方法是用一维数组来表示二维数组。从显示项的标题可以看出,二维数组和二维数组代表一维数组在内存中的存储方式其实是一样的,但是使用二维数组似乎更简单,如只要没有地址转换。
第三种表示是使用一组指标。当每件物品的尺寸不同时,此方法更方便。
第四种方法是使用引用指针的变量。在这个方法中,p是一个指向指针的指针。您无法分配常规二维数组的首地址。这种方法很少使用。
二维数组在内存中逐行存储。
C语言中二维数组的定义是:inta[x][y]。具体理解为一个二维数组a,有x行数据,每行包含y数据。
说明:当我们访问数据时,如果没有x,就无法获取到值。但如果没有y,则可以通过地址获取第x行中的特定值。
如果我们知道x的值,就意味着我们可以确定这一行的首地址。由于二维数组是按行存储的,因此第x行的数据地址关系是按升序排列的。
反证法:如果二维数组按列存储,我们知道y值,并且可以确定第一个地址的值来执行有价值的访问。因为C语言不支持这种方式,所以C语言中的二维数组显然是按行存储的。
高级信息:
输入二维数组:
inta[2][3];
for(inti=0;i<2;i++)
{
for(intj=0;j<3;j++)
{
cin>>a[i][j];
}
通过for循环确定x的值,然后通过for循环确定y的值。
C++中的二维数组通常是按行存储的,即一行存储为一维数组。
例如:a[2][2]是一个二维数组。在内存中的存储顺序为:
a[0][0]a[0][1]//保存第一行文件
a[1][0]a[1][1]//存储第二行。
假设是32位系统,整数占用4个字节,其内存格式为:
a[0][0]
a[0][1]
A[1][0]
A[1][1]
上一篇:亚马逊云计算有多厉害
下一篇:数组在内存中是怎样储存的