본문 바로가기

공부/C, C++

Call by value, Call by address, Call by reference

Call-By-Value
값에 의한 호출

함수로 값을 전달하면 원본이 아닌 복사본이 전달된다. 그렇기 때문에 원본 값은 바뀌지 않는다.

Call-By-Address
주소에 의한 호출

값에 의한 호출과는 다르게 포인터를 사용하여 값의 주소를 가르켜 원본 값을 바꿀 수 있다.

Call-By-Reference
참조에 의한 호출

주소에 의한 호출과 마찬가지로 원본 값을 바꿀 수 있지만 작동 방식에서 차이가 있다.
주소에 의한 호출처럼 포인터를 사용하는 것이 아닌 할당된 하나의 메모리 공간에 이름을 붙이는 것이다.
쉽게 말해서 별명을 붙인다고 생각하면 된다.
이렇게 변수에 별명을 붙이면 변수와 동일한 값과 주소를 갖는다.

 

참조 변수는 이미 선언된 변수에 대한 별명으로, 참조자(&)를 이용하여 선언한다.
선언 시 원본 변수로 초기화해야 한다.

int n = 2;
int ref = &n;

ref = 5; // n, ref가 5로 바뀜
ref++; // n, ref가 6으로 바뀜

'공부 > C, C++' 카테고리의 다른 글

상속, 다형성, 가상 함수  (0) 2019.10.28
C,C++,C#  (0) 2019.10.21
힙 영역과 스택 영역  (0) 2019.10.01