Я начинаю эту ветку, потому что хочу узнать, как успешно использовать один и тот же указатель, чтобы служить в качестве псевдонимов различных функций с множеством значений, скажем, f1 и f2, последовательно.Fortran: указатель на различные функции с массивом
Вот неудачный код, чтобы проиллюстрировать, что я хочу. Благодарю. Ли
PROGRAM main
...
REAL(WP), POINTER, DIMENSION(:) :: p
p=>f1
print*,p(1.0_wp) ! the outcome should be 3
p=>f2
print*,p(2.0_wp) ! the outcome should be 3 1
CONTAINS
FUNCTION f1(x)
IMPLICIT NONE
REAL(WP), TARGET :: f1
REAL(WP), INTENT(IN) :: x
f1=x+2
END FUNCTION f1
FUNCTION f2(x)
IMPLICIT NONE
REAL(WP), TARGET :: f2(2)
REAL(WP), INTENT(IN) :: x
f2(1) = x+1
f2(2) = x-1
END FUNCTION f2
END PROGRAM main
OK, фиксированная на комментарий. –
Спасибо за быстрый ответ. В вашем примере кода есть точные функции, которые мне отчаянно нужны. –