포트란과는 다르게, 옥타브에서 함수 매개변수는 값으로 인정되어, 함수 호출에서 개별 매개변수를 함수에서 처리되지 전에 먼저 검사하여 막기억장치의 임시 구역에 할당합니다. 현재는 함수 매개변수를 값이 아닌 참조로 처리하게 할 명시법이 없습니다. 이 말은 호출한 함수의 함수 매개변수를 직접적으로 바꿀 방법이 없다는 이야기입니다. 그저 울안에 복제한 함수 몸체만 바꿀 뿐입니다. 예를 들어, 아래 함수는
function f (x, n) while (n-- > 0) disp (x); endwhile endfunction
첫 번째 매개변수를 n번 보여줍니다. 이 함수에서 변수 n의 값이 호출로 인하여 바뀔 염려 없이 변수 n은 임시 변수처럼 사용됩니다. 값으로 호출은 또한 함수가 매개변수를 건드는지에 확인할 필요 없이 모든 함수 매개변수에 상수를 넣을 수 있어 유용합니다.
호출자는 변수를 표현식용 매개변수로 사용하여도 되나, 호출된 함수는 이를 알지 못합니다. 함수는 그저 매개변수가 어떤 값을 가졌는지만 압니다. 예를 들어, 주어진 함수를 아래처럼 호출할 때,
foo = "bar"; fcn (foo)
매개변수를 “변수
foo
”로 생각하지 말고, 문자열 값
"bar"
라고 생각하여야 합니다.
비록 옥타브가 함수 매개변수에서 값에 의존하는 의미 체계를 사용하기는 하지만, 값을 불필요하게 복사하지는 않습니다. 예를 들어,
x = rand (1000); f (x);
는 함수 f
가 매개변수를 조작하지 않는 한 1000×1000짜리 행렬을 두 개로 만들지 않습니다.
함수 f
가 매개변수를 조작하는 경우에는, 함수 f
가 자신의 유효 범위 밖에서 값을 바꿀 수 없도록
사본을 만들거나, 상수 값 조작(보통 실패합니다!) 또는 임시 결과 값 조작을 시도합니다.