Call by referance

5.Call by Value와 Call by Reference 개념 및 예제

backend 따라쟁이 2025. 1. 11. 00:15

Call by ValueCall by Reference는 함수 호출 시 인수 전달 방식에 따라 함수 내부에서 변수의 값이 어떻게 다뤄지는지를 설명하는 개념입니다.


Call by Value

  • 개념: 함수에 값을 전달할 때, 변수의 복사본을 전달합니다. 함수 내부에서 값을 변경하더라도 원래 변수에는 영향을 미치지 않습니다.
  • 특징:
    • 호출한 함수의 인수가 변경되지 않음.
    • 값만 복사되어 전달됨.

Call by Reference

  • 개념: 함수에 변수의 참조(메모리 주소)를 전달합니다. 함수 내부에서 참조된 값을 변경하면 원래 변수에도 영향을 미칩니다.
  • 특징:
    • 호출한 함수의 인수가 변경될 수 있음.
    • 주소를 복사하여 전달하므로 원래 데이터를 공유.

Java에서 Call by Value 예제

Java는 Call by Value만 지원하지만, 객체의 참조를 전달하기 때문에 객체의 내부 상태는 변경될 수 있습니다.

 

 


Python에서 Call by Object Reference

Python은 Call by Reference처럼 보이지만, 실제로는 Call by Object Reference입니다. 변경 가능한(mutable) 객체는 내부 값이 수정되지만, 변경 불가능한(immutable) 객체는 영향을 받지 않습니다.

 

C에서 Call by Value와 Call by Reference

C에서는 두 가지 방식 모두 지원하며, 포인터를 사용하여 Call by Reference를 구현합니다.

 

정리

언어Call by ValueCall by Reference

Java 기본 데이터 타입에서 지원 객체를 전달 시 객체 내부 상태 변경 가능
Python 변경 불가능한 데이터 타입 변경 가능한 데이터 타입
C 기본적으로 Call by Value 포인터를 사용하여 Call by Reference 구현

위 내용을 활용하여 블로그 게시물로 작성 시, 개념 설명, 코드 예제, 그리고 각 언어의 특징을 비교하는 표를 포함하여 구성을 완료할 수 있습니다. 추가 요청이 있으면 말씀해주세요!