Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

heenam

Call by value와 Call by reference 차이 본문

[Programming Language]/C

Call by value와 Call by reference 차이

znzltiq 2020. 6. 30. 07:08

Call by value 가장 일반적인 함수 호출의 형태로 호출방식은 값의 복사로 이루어 진다. 함수 안에서 인자의 값이 변경되어도, 외부의 변수의 값은 변경되지 않는다. 함수가 종료되면 해당 공간은 사라진다.

 

Call by reference 함수 호출시 변수의 주소를 전달해 인자로 전달된 주소가 가리키는 변수의 조작을 함수 내에서 가능하게 한다. 함수를 위한 변도의 임시공간에 생성된다. 마찬가지로 함수가 종료되면 해당 공간은 사라진다. 함수 안에서 인자의 값이 변경되면, 외부의 변수의 값도 변경된다.

 

Call by value의 경우 말 그대로 데이터()을 복사해서 함수로 전달하기 때문에 원본의 데이터()가 변경 될 가능성이 없지만, 인자를 넘겨줄 때 마다 메모리의 공간을 할당하기 때문에 메모리 공간을 좀 더 잡아먹게 된다.

Call by reference의 경우 위에서 언급한 메모리 공간 할당의 문제를 벗어나게 되었지만 대신에 원본의 데이터()를 훼손할 수 있다는 문제점이 있다. 그러므로 상황에 따라 적절하게 선택하여 사용하면 될 것이다.