Q.call by
Q.call by
Q. Call by Value, Call by Pointer, Call by Reference?
답변 보기
함수 호출 방식을 나타냅니다. 함수가 인자를 어떻게 받는지에 따라 함수 내에서 인자의 변화가 호출자에게 영향을 미치는지를 결정합니다.Call by Value
- 값만 전달->원본 변수는 변화 없음
- 함수에 인자의 값을 **복사**해서 전달
Call by Pointer
- 주소 전달->원본 변수의 값이 바뀜, 포인터 사용 필요
- 주소 전달(간접 참조), 메모리 소모 있음, 값 복사 발생
- 함수 호출 시 `&`를 사용해 매개변수 전달
Call by Reference
- 참조 전달->원본 변수의 값이 바뀜
- 참조 전달(직접 참조), 메모리 소모 없음, 복사 오버헤드가 없다.
- null값을 허용하지 않는다.
가리키는 대상을 바꿀 수 있어야 하면 포인터 (ex: iterator, linked list 등)
가리키는 대상이 절대 변하지 않는다. 변하면 안된다. 그러면 레퍼런스
(ex: 함수의 매개변수를 통해 함수 밖에서 만든 변수에 결과를 담을 때, 해당 객체를 변경 없이 참조만 할 때)
Q. Call by Pointer가 필요한 경우?
null체크가 필요한 경우
This post is licensed under CC BY 4.0 by the author.