c语言问题:c语言中二维数组在内存中怎样存储?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言问题:c语言中二维数组在内存中怎样存储?相关的知识,希望对你有一定的参考价值。

严格意义上说不存在二维数组,只是数组里的每个元素是一个一维数组,而内存是一段连续的空间,根据你申请一个变量的顺序按地址从低到高排,所以二维数组不可能像一个矩阵那样在内存中排列,这就涉及到它是按行依次往下排,还是按列往下排,而在c++中是按行,既 int a[2][2]
a[0][0]
a[0][1]
a[1][0]
a[1][1]
参考技术A 严格意义上说不存在二维数组,只是数组里的每个元素是一个一维数组,而内存是一段连续的空间,根据你申请一个变量的顺序按地址从低到高排,所以二维数组不可能像一个矩阵那样在内存中排列,这就涉及到它是按行依次往下排,还是按列往下排,而在c++中是按行,既 int a[2][2]
a[0][0]
a[0][1]
a[1][0]
a[1][1]
参考技术B 在C/C++中多维数组都是以行的形式连续地分布在内存中的,来个例子:

int a[2][2];
则其在内存中的表现方式为:

a[0][0], 低地址
a[0][1],
a[1][0],
a[1][1],
高地址
参考技术C 指向一维数组的指针数组。

以上是关于c语言问题:c语言中二维数组在内存中怎样存储?的主要内容,如果未能解决你的问题,请参考以下文章

c语言中怎样输入一个3*3的二维数组存储到文件中在文件中按顺序输出二维数组

C语言中二维数组行指针是啥

C语言数组为啥按行优先存储

C程中如何计算数组(一维及二维)占内存空间的大小

在C语言中如何用把二维数组中的一行贼给一维数组?

[C语言]数组详解