arrays - Fortran 中是否有用于将数组初始化为零的内在函数?

标签 arrays memory-management fortran fortran2003 fortran2008

在 Fortran 中是否有办法将数组(向量、矩阵、甚至标量)设置为零? 2003/2008 似乎将 Fortran 提升到了一个非常现代的水平,我想知道他们是否包含了一种简单的方法来将数组值设置为零,而无需这样做

do i = 1,X

        do j = 1,Y

            A(i,j) = 0

        enddo

enddo

其中 X 是二维矩阵中的行数,Y 是列数。这可以推广到任意多个维度,但原理是相同的。

在 Matlab 中,这可以使用 Zeros 函数轻松完成,即

A = zeros(X,Y)

现代 Fortran 似乎将人们喜欢的 Matlab 和其他语言的许多东西融入到它的功能中,所以我只是好奇他们是否有一个内在的东西来完成这个简单而基本的任务。

或者也许在现代 Fortran 中,没有必要通过初始化数组来清除内存中以前存储的任何值?

我想更短的方法就是直接走

real, dimension(X,Y)        :: A

A = A*0.0 ! Set all elements to zero by multiplying matrix by scalar value 0

但是关于内在函数的问题仍然存在。

最佳答案

事实证明答案非常简单。

A = 0.0 

或者只是

A = 0

会将数组中的所有元素设置为 0.0000...

(从问题中移出。)

关于arrays - Fortran 中是否有用于将数组初始化为零的内在函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43433004/

相关文章:

arrays - VBA - 通过范围定义的二维数组循环

php - 使用 Active Record Codeigniter 在 Mysql 中保存数组

javascript - 比较数组

iOS ARC 不释放 View

c++ - 为什么这个程序输出8589934593而不是4294967298?

macos - 如何编译 Fortran 代码以在未安装 gfortran 的情况下运行

sql - 将限制设置为 array_agg()

c++ - 分配大内存的最佳方法

math - 广义奇异值分解和稀疏矩阵

fortran - 从 Fortran 77 代码(公共(public) block 和等价的组合)转移到 Fortran 90