行主序与列主序
行主序(row-major order)与列主序(column-major order)是线性存储多维数组的两种方法,其主要差别在于哪些数组元素在内存中是连续的。对于行主序,同一行的连续数组元素彼此相邻;对于列主序,同一列的连续数组元素彼此相邻。
以一个3行3列的二维数组为例:
arr[0][0] | arr[0][1] | arr[0][2] |
arr[1][0] | arr[1][1] | arr[1][2] |
arr[2][0] | arr[2][1] | arr[2][2] |
1、对于行主序,数组元素在内存中的存储形式为:
arr[0][0] | arr[0][1] | arr[0][2] | arr[1][0] | arr[1][1] | arr[1][2] | arr[2][0] | arr[2][1] | arr[2][2] |
2、对于列主序,数组元素在内存中的存储形式为:
arr[0][0] | arr[1][0] | arr[2][0] | arr[0][1] | arr[1][1] | arr[2][1] | arr[0][2] | arr[1][2] | arr[2][2] |
C语言中多维数组的存储使用的是行主序形式。