akaGM
Platinum Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору DeadVillage Цитата: только ногами не бейте... | тогда засучиваю рукава... Цитата: 2. Если подпрограмма, получив ссылку на массив, могёт к нему обратиться, то зачем объявлять массив и в подпрограмме? | Цитата: subroutine bbbb(arr) integer*4 arr(1000) | тебя вот это смутило? так это простое объявление заголовка, интерфейса к функции, формат вызова (слышал что-нибудь их этих определений?), как в Си или Паскале, прототипирование... ничего при этом не создаётся, а компилятору сообщается как работать с переданными в п/программу параметрами... ------------- поясню... допустим, мы написали (ничего не зная о типах по умолчанию) subroutine bbbb(P) P = 3.14d0 end sub компилятор честно запишет по адресу P 8 байт... а мы послали в bbbb integer*4... результат? правильно -- облом с перезаписью "чужих" 4 байт рядом с P... хотя это и надуманный пример... Поэтому и надо писать тип параметра: subroutine bbbb(P) integer*4 P P = 3.14d0 end sub тогда по адресу P окажется значение 3 размером в 4 байта... а теперь, начиная с Ф90 вообще стоит писать так: interface subroutine bbbb(P) integer*4 P end subroutine end interface и вставлять это во все модули, кот. используют эту bbbb() с прототипированием повышается надёжность да и наглядность... ------------- ранний Си (K&R), кстати, тоже был "фортраноподобным": int c_func() int i; float f; { } это теперь все пишут: int c_func(int i, float f) { } а раньше в Си заголовки были напрямую заимствованы из Фортрана... я объяснил или только запутал? | Всего записей: 25203 | Зарегистр. 06-12-2002 | Отправлено: 15:00 04-12-2007 | Исправлено: akaGM, 15:06 05-12-2007 |
|