모름

https://luckyyowu.tistory.com/9

 

Call by value와 Call by reference에 대해

※ 본 포스팅은 개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있음을 밝힙니다. 함수의 호출 방법에는 Call by value (값에 의한 호출)과 Call by reference (참조에 의한 호출) 두 가지..

luckyyowu.tistory.com

요약해보자면 함수를 호출할 때 두 가지 방법이 있다.

(1)Call by value

(2)Call by reference

 

대충 이해한걸 적어보자면

value값의 경우 메모리상에 새롭게 값을 만들어서 저장함으로 다른 함수에 value값을 넘겨줘 변경을 시킨다고해도, 그 함수내에서 메인에서 준 value값을 복사하여 새로운 메모리 위치에 값을 생성하여 변경시키므로 메인과 함수의 value는 다른 값을 지니게 된다.

 

reference의 경우에는

포인터로 value의 값을 지정해주고 그 주소값을 다른 함수에 인자로 넘겨주게 된다면, 함수내에서 값을 복사하지 않고 메모리 주소값을 가지고 value에 접근함으로서 똑같은 메모리에 접근이 가능하다. 왜냐하면 같은 주소값(ref)를 가지기 때문이다. 

 

value와 reference의 차이를 살펴보자면

Call by value의 경우에 값을 복사하여 다른 곳에 전달한다. 때문에 원본의 데이터가 변경될 위험이 없다. 하지만 인자를 넘겨줄때마다 값을 복사하기 때문에 메모리를 할당해야하기 때문에 메모리 공간을 더 잡아먹는다. Call by reference의 경우에 값을 복사하지 않기에 메모리를 할당하지 않지만 원본의 값에 접근성이 쉬워지기때문에 원본 데이터가 변경될 위험이 있다.

 

상황에 따라 잘 선택하여 사용하면 된다.