콜 바이 밸류, 콜 바이 레퍼런스 많이 들어 봤다.
이 글을 쓰기 위해 공부를 하면서 Call by Address, Call by Assignment 등을 들어봤다.
그러나 언어에 따른 차이점인 것 같아 크게 들어본 Value, Reference에 대해서만 언급하기로 한다.
--> 추후, 프로그래밍 언어 공부에 따라 다른 부분도 필요하면 업로드할 예정.
항상 말하지만, 정확한 정의, 해석 전달을 해주고 싶다. 그러나 능력이 부족해 올바르게 전달하지 못할 수 있다.
그래서 댓글이나 연락을 준다면 꼭 수렴해 변경하고 싶다.
먼저, 각 정의부터 정리하고, 차이점을 짚어주겠다.
함수 호출방식에 따른 단어.
1. Call by value ( 값에 의한 호출 )
- C++ 경우, 함수가 호출될 때, 메모리 공간 안에서는 함수를 위한 별도의 임시 공간이 생성된다. ( == Stack Frame)
( 이렇게 생성된 함수가 종료되면 해당 메모리 공간은 사라진다 )
- 함수 호출 시, 전달되는 변수의 값을 복사하여 함수의 인자로 전달한다.
--> 전달하는 변수의 값을 Stack Frame의 변수에 복사해 인자로 전달하는 것.
- 따라서 함수 안에서 인자의 값이 변경하거나, 변경되어도 외부의 변수의 값은 변경되지 않는다.
흠, 자바의 경우 데이터 타입에 따라서 다르다고 하는데, C++ 입장에서 써보려고 한다.
2. Call by reference ( 참조에 의한 호출 )
- 함수 호출 시, 인자로 전달하는 변수의 레퍼런스를 전달한다. ( 해당 변수를 가리킨다 )
--> 포인터 느낌이랄까?
Keyword : Stack Frame
- 함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 영역
- 스택 영역은 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸합니다.
'개발 > 개발자 면접 준비' 카테고리의 다른 글
빌드과정 ( 전처리, 컴파일, 어셈블리, 링킹 ) (0) | 2019.11.07 |
---|---|
x64와 x86의 차이 (0) | 2019.10.13 |
Procedure, Function (0) | 2019.10.02 |