승쨩개발공부
[C++] CallbyValue, CallbyAdress, CallbyReference 본문
Call by ?
Call by Value -> 값에 의한 호출
Call by Adress -> 주소값에 의한 호출
Call by Reference -> 직접 참조의 의한 호출, 메모리 할당이 전혀 없다
Call by Value
값을 전달하는 형태의 함수 호출
함수 호출을 할떄 단순히 값을 전달하는 형태의 함수호출을 가리켜 Call by Value 라고 한다.
-> 위 소스와 출력을 보면 Swap이 되지 않았다는것을 알 수 있다.
-> 그 이유는, Callby_ValueSwap 함수의 매개변수 값인 _iNum1과 _iNum2의 값이 바뀌었지 정작
-> 메인함수의 변수인 iNum1과 iNum2의 저장된 값이 스왑으로까지 이어지지 않았다는 것을 알 수 있다.
-> (그니깐 , 메인함수에는 값의 영향이 없다)
Call by Adress
주소값에 의한 호출
Call by Value와 다르게 주소값을 사용하기 위해서는 포인터 변수가 필요하다.
포인터 변수를 이용해 주소를 전달하기 떄문에 메인 함수와 또 다른 함수와의 변수끼리 접근이 가능하다.
-> 위 소스와 출력을 보면 스왑이 되었다는 것을 볼 수 있다.
-> 그 이유는 Callby_AdressSwap 함수의 매개변수는 포인터 변수이며, 주소를 전달하기 떄문에
-> 메인함수의 지역변수 주소를 전달하여 값을 바꿀 수 있기 떄문이다.
Call by Reference
직접 참조의 의한 호출
참조자에 의한 전달값을 전달하는 것을 의미한다.
참조연산자(레퍼런스 변수)로 인자를 받는다. (레퍼런스 변수는 그 변수의 별명을 의미한다)
특징은 메모리 할당이 전혀 없다는점
(이미 선언된 어떠한 변수의 별명을 사용하기 떄문에 따로 메모리 할당을 받지 않는다)
'C++' 카테고리의 다른 글
[C++] OOP(객체지향) 정리 (0) | 2022.01.05 |
---|---|
[C++] 난수(rand/srand) (0) | 2021.12.15 |
[C++] 지역변수 / 전역변수 / 정적변수(static) (0) | 2021.12.14 |
[C++] 진수 (0) | 2021.12.14 |
[C++] 템플릿 (0) | 2021.12.07 |