Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

승쨩개발공부

[C++] CallbyValue, CallbyAdress, CallbyReference 본문

C++

[C++] CallbyValue, CallbyAdress, CallbyReference

Unknowns 2022. 1. 4. 17:34

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