프로그래밍/TIL(Today I Learned)

14강 매개변수의 전달기법(2)

가라멜 2018. 10. 16. 19:18
반응형

1. 매개변수 전달 기법

2) 값 호출 또는 값 전달(call by value)

- 형식 매개변수에 해당되는 기억 장소를 별도로 유지하는 방법

- 실 매개변수 값이 어떠한 경우라도 변하지 않음

- C, Pascal에서 기본적으로 사용

> (1) 호출 프로그램은 실 매개변수에 해당되는 주소는 보냄

> (2) 호출된 프로시점은 r-value를 구하여 자신의 형식 매개변수의 기억 장소에 복사하여 다른 지역 변수와 동일하게 취급하여 사용


3) 결과 호출(call by result) 또는 결과 전달

- 호출된 프로시저가 값을 반환하는 한 가지 방법

- 값 호출과 마찬가지로 호출된 프로시저가 형식 매개변수 값을 저장할 기억장소를 보유함

>(1) 호출된 프로시저가 형식 매개변수를 지역 변수로 취급하여 모든 연산을 수행

>(2) 호출 프로그램에게 반환하기 직전에 이 형식 매개변수의 값을 그에 대응되는 실 매개변수에 복사

- 값-결과 호출 또는 값-결과 전달

- 값 호출과 결과 호출의 개념을 함께 사용

- 형식 매개변수를 지역변수로 간주

- 호출된 프로시저의 시작부 : 실 매개변수값 -> 형식 매개변수

- 호출된 프로시저의 끝맺음부 : 형식 매개변수 값 -> 실 매개변수


4) 이름 호출(call by name)

- 형식 매개변수가 사용된 모든 자리에 실 매개변수의 이름을 그대로 복사한 것처럼 간주하여 사용하는 방법

- 다른 매개변수 전달 기법에 비하여 구현이 난해함

- 프로그램을 작성하고 읽기가 어려움

- Algol60에서 사용되었으나, 최근의 언어에서는 잘 사용되지 않음


2. 부작용, 별명, 연산자 다형성

- 프로그램을 난해하게 만들 수 있는 개념

1) goto문, 포인터 : 가독성 저해, 의도와는 다른 유해한 작용 유발 가능

2) 부작용, 별명 : 변수가 어떤 값을 갖게 될지 모르는 경우를 만들어 프로그램의 가독성 저해

3) 연산자 다형성 : 중복 개념을 사용하여 잘못 사용하면 난해할 수 있으나 일반적으로는 가독성 높여줌


- 부작용 : 지역 변수 이외의 변수값을 변화시키는 것으로 국한,

- 별명 : 한 변수에 대해 그 변수명을 대체할 수 있는 다른 식별자

- 연산자 다형성 : 중복 정의(overload) : 한 개체가 두 가지 이상의 개념으로 사용


반응형