Похоже, что это требование старого Фортрана 2003 и ослабленного в Фортране 2008. Более поздний gfortran (5+) принимает это.
Вы можете получить местоположение начала массивазначение со смещением 0 в C.
septr = c_loc(septr1(1))
или вообще не 1, а lbound (septr1).
См. Требования к аргументу c_loc в Metcalf, Reid и Cohen или в стандарте Fortran.
Как правило, гораздо лучше передавать массив по ссылке обычным способом Fortran, а непостроить явный указатель c.Например:
call some_c_function(n,A)
где функция some_c_ имеет интерфейс Fortran
interface
subroutine some_c_function(n,A) bind(C)
use iso_c_binding,only: c_int,c_float !you can use also import here
integer(c_int),value :: n
real(c_float),dimension(n):: A
end subroutine some_c_function
end interface
для прототипа C
void some_c_function(int n, float* A) //(hope so, I am not so good in C).