👩🏻‍💻기초지식/C++

[C++] Call By Value/Address/Reference

공대 컴린이 2023. 8. 17. 11:12
728x90

Call By Value/Address/Reference

- 함수를 호출할 때 인자를 전달하는 방식을 나눈 것

 

Call By Value (값에 의한 호출)

- 함수를 호출할 때 매개변수에 있는 값이 함수로 복사되어 전달되는 형태

- 함수 내에서 매개변수의 값을 변경하더라도 원본 변수에 영향을 주지 않는다.

Call By Address (주소에 의한 호출)

- 함수를 호출할 때 매개변수에 포인터(*)를 전달하여 원본 변수의 주소를 전달하는 방식

- 함수 내에서 매개변수 값을 변경하면 원본 변수에 영향을 준다.

Call By Reference (참조에 의한 호출)

- 함수를 호출할 때 매개변수에 레퍼런스(&)를 전달하여 원본 변수를 참조하도록 하는 방식

- 함수 내에서 매개변수 값을 변경하면 원본 변수에 영향을 준다.

- 다만, 매개변수에 const 키워드를 붙여 함수 내에서 변수의 값을 변경할 수 없도록 할 수 있다.

Call By Address 논란

- c에서는 call by address가 주소를 넘겨주는 것처럼 보이지만 사실 call by value의 방식처럼 단순히 주소를 복사해서 주소라는 '값'을 넘겨주는 것이다.

- 따라서 call by address는 주소 '값'을 전달하는 call by value의 특성과, 주소에 해당하는 값을 바꿀 수 있는 call by reference의 특성을 둘 다 가진 방식이라고 생각하는것이 좋다.


https://rehtorb-algorithm.tistory.com/11

 

[C++] call by value, call by address, call by reference 차이

함수가 호출될 때 매개변수에 인자를 어떤 방식으로 넣어줄건지에 대한 개념이죠. call by value : 값에 의한 전달call by address : 주소에 의한 전달call by reference : 참조에 의한 전달 1. call by value 더보

rehtorb-algorithm.tistory.com

728x90