Fortran Coder

标题: 多次调用子例程,子例程中的数组和结构体的初始化问题 [打印本页]

作者: 律1234    时间: 2022-2-18 13:14
标题: 多次调用子例程,子例程中的数组和结构体的初始化问题
有些子例程会被多次调用,但子例程中的数组和结构体都没有初始化,因此,第二次调用的时候数组和结构体的初始值直接就是第一次调用后运算的结果,这就导致第二次调用运算的结果与真实的结果有细微的差别甚至会是天差地别。
原想着可以一个个地进行初始化,但程序太大了,一来工作量会很大,二来说不定就会有遗漏
所以想请教各位大神怎么才能快速地解决这个问题啊?

作者: 律1234    时间: 2022-2-18 13:17
编译环境是IVF
作者: vvt    时间: 2022-2-18 17:00
本帖最后由 vvt 于 2022-2-18 17:02 编辑

每次进入子程序时,其局部变量的值,都是不确定的(注意,不能确保是上一次的值,除非他具有save属性)

必须手动初始化,才能保证是0值。别无他法

作者: 律1234    时间: 2022-2-18 17:46
vvt 发表于 2022-2-18 17:00
每次进入子程序时,其局部变量的值,都是不确定的(注意,不能确保是上一次的值,除非他具有save属性)

必 ...

谢谢!
但调试发现,第一次调用的时候,数组和结构体没有初始化,却默认为0;只是后面接着调用的时候才会是上一次调用运行的结果
作者: vvt    时间: 2022-2-18 19:21
律1234 发表于 2022-2-18 17:46
谢谢!
但调试发现,第一次调用的时候,数组和结构体没有初始化,却默认为0;只是后面接着调用的时候才会 ...

你调试发现的情况,是“不确定”的一种情况。
不能保证总是这样。所以称之为“不确定”
作者: 律1234    时间: 2022-2-18 19:48
vvt 发表于 2022-2-18 19:21
你调试发现的情况,是“不确定”的一种情况。
不能保证总是这样。所以称之为“不确定” ...

原来如此,多谢了




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2