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
'👩🏻💻기초지식 > C++' 카테고리의 다른 글
[C++] 상수(const)의 역할과 종류 (0) | 2023.08.17 |
---|---|
[C++] auto 키워드 (0) | 2023.08.17 |
[C++] 메모리 구조 (0) | 2023.08.17 |
[C++] 지역변수, 전역변수, 동적변수란? malloc과 new의 공통점 차이점은? (0) | 2023.08.17 |
[C++] 스마트 포인터 3가지, 언리얼의 스마트 포인터(TSharedRef), TSharedFromThis (AsShared, SharedThis) (0) | 2023.05.09 |