fortran语言二维数组定义时,第一个数字是行还是列?

如题所述

C,C++,Fortan

行和列的概念是一样的,不一样的是处理方式(存储方式)

Fortan
列优先,C,C++行优先

Fortran:填满一列的每一行,再换列填下一列的每一行
C:填满一行的每一列,在换行
填下一

的每一列

Fortran:

字符数组的话
charater name(1 :12,1:88)表示12行,88列的二维数组
存储时 第1行 第2行 第i行
第1列 : name(1,1) name(2,1) name(3,1) name(4,1) name(i,1) 。。。 name(12,1)
第2列 : name(1,2) name(2,2) name(3,2) name(4,2) name(i,1) 。。。 name(12,2)
。。。
第j列 : name(1,j) name(2,j) name(3,j) name(4,j) name(i,j) 。。。 name(12,j)
。。。
第88列 : name(1,88) name(2,88) name(3,88) name(4,88) name(i,88) name(12,88)

C,C++:
char name[12][88];
表示12行,88列的二维数组

存储时 第1列 第2列 。。。 第j列 。。。 第88 列
第1行 name [0][0] , name [0][1] name [0][2]。。。, name [0][j-1] 。。。 ,name [0][87]
第2行 name [0][0] , name [0][1] name [0][2]。。。,name [0][j-1] 。。。 ,name [0][87]
。。。
第i行 name [i-1][0] , name [i-1][1], name [i-1][2]。。。,name [i-1][j-1] 。。。,name [i-1][87]
。。。
第12行 name [11][0] , name [0][1], name [0][2] 。。。, name [11][j-1]。。。, name [11][87]
无论Fortran还是C,C++的,二维数组前面一个是行,后面一个是列。
只是存储时,Fortran 每一列数据是连续存储的,同一列连续两行是两个相邻的数据。
C,C++每一行是连续存储的;同行连续两列是相邻的数据。
另外,有人说二维数组没有行列的概念,这大概是从哲学上说的,别相信。
数组的概念是从数学来的,数组和数学上的向量,矩阵的概念是相关的。
向量--->一维数组
矩阵--->二维数组
由于二维数组对应数学上的矩阵,所以肯定是有行列的概念的。
行列的概念和如何存储二维数组关系不大,所以,不论是fortran还是C,C++ 第一个为行,第二个为列。
PS:
Fortran 存储顺序为列优先,C,C++行优先,这是不同的人作出的不同选择,和数据存储的大端,小端一样,没有标准,所以采取了两种不同的方法。并且都流行了下来。
于是我们就比较为难了。
温馨提示:答案为网友推荐,仅供参考