Call by value (값에 의한 호출)

 

  • 함수가 호출 될 때,  메모리 공간 안에 함수를 위한 별도의 임시공간이 생기는 데 이를 스택 프레임(Stack Frame)이라고 한다. 해당 공간은 함수가 종료되면 사라진다. (공통점)
  • 이 호출 방식은 함수 호출시 전달되는 인자 값을 복사 하여 함수의 매개변수로 전달 (그 값 주소가 전달되는게 아님)
  • 복사된 매개변수는 함수 안에서 로컬 변수로 사용되며 이 변화는 외부 변수에 영향을 미치지 못한다.
  • 복사하여 처리하기 때문에 기본 값이 보존되어 안전하다. 다만 복사하는 만큼 메모리 사용량이 늘어난다.

 

 

Call by Reference (참조에 의한 호출)

 

  • 함수가 호출 될 때,  메모리 공간 안에 함수를 위한 별도의 임시공간이 생기는 데 이를 스택 프레임(Stack Frame)이라고 한다. 해당 공간은 함수가 종료되면 사라진다. (공통점)
  • 이 호출 방식은 함수 호출시 전달되는 변수의 레퍼런스를 전달하기 때문에 함수 안에서 매개변수 값이 변경되면 전달된 인자의 원본 값도 함께 변경된다. 
  • 복사하지 않고 직접 참조하기 때문에 빠르다. 하지만 원래 값은 보존하지 못한다.  

 

 

 

 

강의노트 12. 함수 호출방식(call-by-value, call-by-reference, call-by-assignment) · 초보몽키의 개발공부로그

패스트캠퍼스 컴퓨터공학 입문 수업을 듣고 중요한 내용을 정리했습니다. 개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.

wayhome25.github.io

 

Java 의 Call by Value, Call by Reference

Overview Java 에서 메서드를 호출 시 파라미터를 전달하는 방법에 대해 알아봅니다. 순서는 다음과 같이 진행합니다. Call by Value, Call by Reference 차이 Java 에서의 파라미터 전달 방법 JVM 메모리에 변

bcp0109.tistory.com

 

 

  • 자바 경우, 함수에 전달되는 인자의 데이터 타입(기본타입형, 참조자료형)에 따라서 메서드도 호출 방식이 달라진다.
    • 기본 자료형 (primitive type) : call by value로 동작
    • 참조 자료형 (reference type) : call by reference로 동작

발표를 준비하면서 이런 부분도 있었는데 아래 글보고 자바는 call by reference가 없다는 게 맞다는 생각이 들었다.

결국 참조 자료형도 주소값을 복사하여 새로운 변수로 사용하는 거라...

 

 

[Java] Java는 Call by reference가 없다

Call by Value와 Call By Reference가 뭘까? 프로그래밍을 하다 보면 꼭 알고 넘어가야 하는 개념이 있습니다. 바로 Call By Value, Reference입니다. 어떤 언어를 공부하든 나오는 개념이기도 합니다. Call by value

deveric.tistory.com

 

'Computer Science > Basic' 카테고리의 다른 글

SOLID 원칙  (0) 2023.02.22
테스트 코드 란?  (0) 2022.12.10
컴퓨터 과학 CS - C 기초  (2) 2022.10.23
콘솔(Console), 터미널(Terminal), 쉘(Shell), 프롬프트(Prompt)  (0) 2022.10.23
컴퓨터 과학 CS - 스크래치  (0) 2022.10.20

+ Recent posts