Pascal, C/C++, Java, Ada, and Modula-2等语言都是row-major(以行为主,即以行为高维)表示的:
比如:
int a[3][3] =
{
1, 2, 3,
4, 5, 6,
7, 8, 9
};
则其在内存中的存储形式为:
// 低地址——→高地址
......1, 2, 3, 4, 5, 6, 7, 8, 9......
FORTRAN和老版本的VB都是以column-major(以列为主,即以列为高维)的形式保存的,刚才的数组在这些语言中在内存中表示为:
// 低地址——→高地址
......1, 4, 7, 2, 5, 8, 3, 6, 9......
所以在C/C++中多维数组都是以行的形式连续地分布在内存中的,再来个例子:
int a[2][2][2];
则其在内存中的表现方式为:
a[0][0][0], 低地址
a[0][0][1],
a[0][1][0],
a[0][1][1],
a[1][0][0],
a[1][0][1],
a[1][1][0],
a[1][1][1], 高地址
具体的你可以去看看:
Write Great Code-Understanding the Machine, Volume I
7.2.2 Array Representation in Memory
温馨提示:答案为网友推荐,仅供参考