본문 바로가기
Language/C++

[c++][pointer vs reference 정복 2] Pass by value vs Pass by reference

by 담백로봇 2022. 11. 18.

코드없는 프로그래밍 유튜브가 생각나서 오늘은 기본이 되는 pass by value vs pass by reference  vs pass by pointer를 다뤄 볼려고한다.  

 

함수에 argument (함수에 인풋으로 들어가는것들) 를 넘겨주는 방식은 3개지가있는데 value, reference , pointer 가있다.

 

 

- 여기서 a 는 value가 넘어간것이고

 

 

- 이 함수에서는 포인터가 

 

 

 - 이 함수에서는 & 가 넘어가서 argument가 넘어간것이다.

 

 

 

 

 

 

 

memory view


이어지는 R-valueL-value  의 설명

 이 두 개념은 c++ 에만 있는 고유개념으로 OOP하기전에 알아야하는 유용한 개념

L-Value : 바뀔 수 있는 값이고

R-value : 바뀌지않는 고정값이다.

 

자 이제 pointer(stack)가 heap 공간을 가리킬때 memory view로 어떻게 복사 및 생성이 되는지 예제정리.

 

 

 

카피가 2번일어나게되고

 

 

카피가 1번

 

 

카피가 0번 일어나 메모리 측면해서 절약했다고 볼수있음. &&의 표시는 R-value라는 뜻으로 a값은 바뀌지않는 값이 들어가야한다. 근데 storeByRRef(aa)라고 적어버리면 이미 aa는 "abc"로 바뀐값이므로 l-value여서 오류가뜸. 이를 가능하게해주는것은 std::move() 함수로 l value값을 R-value값으로 변환시켜 컴파일을 가능하게 해준다.!

012
순서대로 value, Reference, R-value를 사용한 Rerence.

 

정리해야지 정리해야하지 하고 막상 할려니 너무 어려운! 드디어 정리완료! 

 

https://www.youtube.com/watch?v=GutCygNRi-I&list=PLDV-cCQnUlIa5K5UYxaXsH78Ao0pltrlq&index=3&ab_channel=%EC%BD%94%EB%93%9C%EC%97%86%EB%8A%94%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D

댓글