Фортран делает; хорошо, предшествуя таким понятиям, как передача по ссылке, вероятно, следует сказать, что он использует передачу по адресу; функция Фортрана, как:
INTEGER FUNCTION MULTIPLY_TWO_INTS(A, B)
INTEGER A, B
MULTIPLY_BY_TWO_INTS = A * B
RETURN
будет иметь прототип в стиле C:
extern int MULTIPLY_TWO_INTS(int *A, int *B);
и вы можете позвонить через что-то вроде:
int result, a = 1, b = 100;
result = MULTIPLY_TWO_INTS(&a, &b);
Другим примером являются языки, которые не знают аргументы функции как таковые, но используют стеки. Примером может служить Forth и его производные, где функция может изменять пространство переменных (стек) любым способом, каким хочет, изменяя существующие элементы, а также добавляя / удаляя элементы. «Комментарии к прототипу» в Forth обычно выглядят как
(argument list -- return value list)
и это означает, что функция принимает / обрабатывает определенное, не обязательно постоянное, число аргументов и возвращает, опять же, не обязательно постоянное, количество элементов. То есть у вас может быть функция, которая принимает число N
в качестве аргумента и возвращает N
элементов - предварительно выделяя массив, если вам так нравится.