在c语言里二维数组元素在内存中是怎么存放的?

作者&投稿:管怡 (若有异议请与网页底部的电邮联系)

在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++动态二维数组:

以整形为例,row为行数,col为列数

int **data;//存储二维数组的指针(指向指针的指针。date=x[0][0]的地址。这样标会更好。因为sizeof(date)结果为4不可能存下二维数组)。

//以下实现如何申请内存

data = new int *[row];

for (int k = 0; k < row; k++)

{

data[k] = new int[col];

}

//赋值跟普通二维数组一样 例如

data[0][0] = 5; //将二维数组1行1列(C++中称为0行0列)赋值为5

//删除内存

for (int i = 0 ; i < row; ++i)

{

delete [] data[i]; //此处的[]不可省略

}

delete [] data;



~

在C语言中,写出二维数组元素a[2][3]在内存中的存放顺序
答:在 C 语言中,二维数组是由一系列连续的内存位置组成的,其中每个元素占用一个特定的字节数。对于一个二维数组 a[2][3],其存放顺序如下图所示:```+---+---+---+ | a[0][0] | a[0][1] | a[0][2] | +---+---+---+ | a[1][0] | a[1][1] | a[1][2] | +...

简要说明二维数组中的每个元素在计算机中是怎么样存储的?
答:二维数组中的每一个元素在计算机当中的内存中都是连续存储的。具体存储的格式根据不同的编译系统,有不一样的。大多数的编译系统是仙存储第一行,第一个元素,然后再存储第一行的第二个元素,照此类推到第一行的最后一个元素,存储完成以后再存储第二二行的第一个元素,直到全部元……

在C语言中,二维数组元素在内存中的存放顺序是___。(
答:自己用VC++6.0作了测试,代码如下:输出结果如下:可见,此二维数组在内存中按照如下顺序存放:a[0][0]a[0][1]a[1][0]a[1][1]a[2][0]a[2][1]

二维数组的内存存放问题
答:是连续的。c跟c++内存上看都只有一维的数组,也就是,只要你声名了一个数组,那么这个数组的所有元素都是在内存中顺序存放的。所谓的多维数组只是一种逻辑概念或者处理数据的组织形式。比如 数组 Int arr[3][3][3] 这个数组对于编译器来说就是一个容量为3*3*3的一维数组。之所以分为三个维度,...

若C语言中定义了二维数组a[2][2],则a中的元素为(按存储顺序写)?_百度...
答:a[0][0],a[0][1],a[1][0],a[1][1],数组在内存中是顺序存储。

在C++语言中,二维数组在内存中的存放顺序是
答:二维数组在c++中存储,一般是按行存储的,就是将一行当作一维数组进行存储。例如:a[2][2]这个二维数组,其在内存中存储顺序为:a[0][0] a[0][1] //先存储第一行a[1][0] a[1][1] //再存储第二行。假设是32位系统,整型占4个字节,则其在内存的形式为:a[0][0]a[0][1]...

C语言二维数组内存是怎么分配的?
答:二维数组在内存中其实是一个平坦的一维数组,下面具体说明:int arr[3][5]和 int arr[15]所使用的内存区大小是一样的,都是15*sizeof(int)个字节。如果你做下面这样一个定义:union{ int a[3][5];int b[15];}U;你会发现 U.a = &U.b U.a[0]== &U.b[0]U.a[1]== &U.b[...

二维数组的一个元素在计算机的储存器中占几个字节?如果是三维数组的一...
答:一个元素在计算机的储存器中占几个字节不是由它是几维的来决定。应该由它的元素类型和所使用的编程环境来决定,例如:int 的一个元素 在C语言里占2个字节,在C++里占4个字节 而整个数组的 就用一个的字节数 乘以 数组中的元素个数就可以啦o(∩_∩)o...

一些关系c语言的概念问题。一点都不懂。。。
答:5.储存类别说明符有(auto)(register)(extern)和(static)。6.指针是把另一个变量的(地址)作为其值的变量。7.C语言中的实行变量分为两种 他们是(局部变量)和(全局变量)8.表达式98 && 8 && 31 & 1的值 是(1)9.c语言中,二维数组元素在内存中的存放顺序是(按行存放)二 正确 ...

...的值相同 A.*(a+6) B.*(&a[0]+6) C.*a[1]+2 D.a[1][2]
答:C语言规定:二维数组元素在内存中顺序排放,排列顺序是按行存放。即先顺序存放第一行的数组元素,然后存放第二行的数组元素,依此类推。int a[3][4]第一行:a[0][0],a[0,1],a[0,2]此时a[0,2]的地址==p+=3 第二行:a[1][0],a[1,1],a[1,2]此时a[1,2]的地址==p+=6 A....