FORTRAN стирает значения arg между вызовами функций? - PullRequest
0 голосов
/ 14 декабря 2010

Так странно. Требует ли FORTRAN повторной инициализации переменных после их отправки в качестве параметров? Я получал ошибку сегментации всякий раз, когда отправлял те же аргументы в другую подпрограмму. Я обнаружил, что значения аргументов стираются между первым вызовом и вторым без операторов переназначения аргументов между вызовами функций или даже в любой из функций. Область действия этих аргументов ограничена основной программой (я не использую ОБЩИЕ блоки).

Я не могу опубликовать код прямо сейчас, когда пишу с телефона, но есть идеи? Временное решение - переназначить значения непосредственно перед вызовом второй функции.

Спасибо за помощь.

Ответы [ 2 ]

4 голосов
/ 14 декабря 2010

Fortran передает аргументы по ссылке, поэтому, если вы изменяете их в первой подпрограмме, они будут изменены в вызывающей программе.

3 голосов
/ 14 декабря 2010

Ни один Фортран не убирает переменные, если они используются в качестве аргументов в вызове подпрограммы.

Однако аргументы, передаваемые по ссылке, могут изменять свои значения вызываемой подпрограммой.Попробуйте напечатать переменные перед вторым вызовом.Посмотрите, как первая подпрограмма использует параметры.

Только моя ценность в .020.02 - прошло десятилетия с тех пор, как я посмотрел на Фортран (IV).

...