- Call by Value :
함수 호출에서 함수 실행에 필요한 값을 전달한다. 이것을 함수의 매개변수 전달이라 고 한다.
Call by value 란 값을 직접 전달하는 것을 말한다.
Ex:int Func(int a);
함수 Func()을 호출할경우 정수형 값을 저장하는 변수를 전달하거나 정수형 상수값을 그대로 전달한다.
Int b =100;
Func(b);
Func(999);
전달되는 내용은 기억 장소에 저장된 값이다. 이를 Call by Value 라고 한다. 즉 함수 호출에서 값이 전달되었음을 나타낸다.
- Call by Reference
주소를 전달한다.주소를 다루는 변수는 포인터 변수와 참조변수가 있따.
Int Tunc(int &a); -> 매개변수 a는 정수형 참조변수이므로 함수 Func()를 호출할 때 정수형 참조변수를 전달해야한다.
참조변수 선언은 선언과 동시에 초기화 해야한다. 기억장소의 정보,해당 기억 장소의 값을 참조할수있다.
기억장소의 참조는 참조변수 외에 포인터 변수도 가능하다.포인터 변수의 경우 변수의 주소값을 저장하므로 참조변수와 마찬가지이다.
Int Func(int *a); -> 함수의 매개변수는 정수형 변수의 주소이여야한다.
Int b =200,int *p=&b;
Func(&b); -> 주소지정연산자를 사용해서 정수형 변수 b의주소를 전달
Func(p); ->정수형 포인터 변수에 값을 할당하고,그 포인터 변수를 매개변수에 전달
즉 위의 두가지경우 다 주소값을 전달한다.
전달되는 내용이 주소라면 Call by Reference 라고한다. 함수 호출에서 주소가 전달되므로 해당 주소를 이용해서 실제 그 주소에 저장된값을 참조하는 것