[내배캠 TIL ] 7주차 월요일 :: call by value VS call by reference
팀프로젝트를 진행하면서 equelize를 사용하여 api를 작성하고 있는데 확실히 저번주에 했던 거라 그런지 작성하는 데에는 큰 어려움이 없었던 것 같다.
내일까지 마무리를 하면서 좋아요기능과 이미지 URL를 가져와 프런트에 연결해서 잘 작동할 수 있도록 하는 고민을 하면서 코드를 짜봐야겠다.
오늘 팀프로젝트를 진행하면서 좋은 정보를 얻었는데, 나중에 개발자가 되기 위해 시험을 칠 때 무조건 나온다고 생각해도 되는 내용이라 글을 남겨본다.
call by value VS call by reference
Call by value(값에 의한 호출)은 인자로 받은 값을 복사하여 처리를 한다.
그림을 보면 swap()을 호출하게 되면 a와 b의 값만 받아와서 내부적으로 처리를 하고 아무 것도 넘기지 않는다.
변수를 주소로 가져오거나 포인터를 통해서 가져온 것이 아니기 때문에, 새로운 변수를 만들어서 값을 대입하여 처리한 것이다. 이 경우 교체는 되지 않고 swap() 내부에서만 처리가 되게 된다.
call by value의 장점으로는 복사하여 처리하기 때문에 안전하고원래의 값이 보존된다. 단점으로는 직접 참조를 하기 때문에 메모리가 사용량이 늘어난다.
다음으로 Call by reference(참조에 듸한 호출)은 인자로 받은 값의 주소를 참조하여 직접 값에 영향을 준다.
위에서는 main의 a, b의 주소를 가져와서 처리했다. 직접 주소를 가져와서 처리를 했기때문에 a, b의 값이 교체가 된 것을 볼 수 있다. 이런 방법에서는 주소나 포인터를 사용하여 직접 변수에 접근하기 때문에 리스크가 있다.
call by reference의 장점으로는 복사하지 않고 직접 참조를 하므로 빠르다. 단점은 직접 참조를 하기 때문에 원래 값이 영향을 받는다.