heenam
Call by value와 Call by reference 차이 본문
Call by value 가장 일반적인 함수 호출의 형태로 호출방식은 값의 복사로 이루어 진다. 함수 안에서 인자의 값이 변경되어도, 외부의 변수의 값은 변경되지 않는다. 함수가 종료되면 해당 공간은 사라진다.
Call by reference 함수 호출시 변수의 주소를 전달해 인자로 전달된 주소가 가리키는 변수의 조작을 함수 내에서 가능하게 한다. 함수를 위한 변도의 임시공간에 생성된다. 마찬가지로 함수가 종료되면 해당 공간은 사라진다. 함수 안에서 인자의 값이 변경되면, 외부의 변수의 값도 변경된다.
Call by value의 경우 말 그대로 데이터(값)을 복사해서 함수로 전달하기 때문에 원본의 데이터(값)가 변경 될 가능성이 없지만, 인자를 넘겨줄 때 마다 메모리의 공간을 할당하기 때문에 메모리 공간을 좀 더 잡아먹게 된다.
Call by reference의 경우 위에서 언급한 메모리 공간 할당의 문제를 벗어나게 되었지만 대신에 원본의 데이터(값)를 훼손할 수 있다는 문제점이 있다. 그러므로 상황에 따라 적절하게 선택하여 사용하면 될 것이다.
'[Programming Language] > C' 카테고리의 다른 글
chapter27 파일의 분할과 헤더파일의 디자인 (0) | 2020.05.01 |
---|---|
Chapter26 매크로와 선행 처리하기 (0) | 2020.05.01 |
Chapter 25 메모리 관리와 메모리의 동적 할당 (0) | 2020.04.23 |
Chapter 24 파일 입출력 (0) | 2020.04.17 |
chapter 23 구조체와 사용자의 정의 자료형2 (0) | 2020.04.10 |