在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字节。
扩展信息
动态二维C++案例:
以Plastic为例,row为行数,col是列数
int**data;//二维数组存储指针(指向指针的指针。date=x[0][0]的地址。这个注释会更好因为sizeof(data)的结果不可能存储4)的二维数组。
//下面的实现中如何申请内存
data=newint*[row];
for(intk=0;k { data[k]=newint[col]; } //赋值同上一个普通的二维数组例如 data[0][0]=5;//设置二维数组的1行1列的值(在中称为0行0列).C++)to5 //删除内存 for(inti=0;i <{ delete[]data[i];//[]此处无法删除 } delete[]data;
二、在c语言中二维数组元素在内存中的存放顺序是在C语言中,二维数组元素在内存中的存储顺序是行优先顺序。也就是说,首先存储第一行的元素,然后是第二行,依此类推。当一行中的元素数量大于内存中连续字节数时,将从内存中的下一个地址开始存储下一行的元素。这种存储方式可以让二维数组在内存中占据连续的地址空间,方便访问。
上一篇:内存频率和容量哪个重要
下一篇:c语言二维数组内存存放原则