[Basic] Call by Value VS Call by Reference

양다혜·2021년 5월 19일
1

컴퓨터기초지식

목록 보기
2/4

함수 호출 방법

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

Call by Value(값에 의한 호출)

  • 인자로 받은 값을 복사하여 처리

[장점]

  • 복사하여 처리하기 때문에 안전
  • 원래 값 보존

[단점]

  • 복사를 하기 때문에 메모리 사용량 up

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

  • 인자로 받은 값의 주소를 참조하여 처리

[장점]

  • 복사하지 않고 직접 참조하기 때문에 속도가 빠름

[단점]

  • 직접 참조 하기 때문에 원래 값이 영향을 받음

예제(swap 함수)

Call by Value

void main(){
	int a = 10;
	int b = 5;
	
	swap(a, b);
	printf("a: %d, b: %d", a, b); // a: 10, b: 5 출력
}
void swap(int x, int y){
	int tmp = x;
	x = y;
	y = tmp;
}
  1. x = a, y = b 전달됨(in swap)
  2. swap 함수 내부에서 x, y 값은 교환됨
  3. 하지만 a, b에게는 전달되지 않음(값만 복사되어 교환됨)

Call by Reference

void main(){
	int a = 10;
	int b = 5;

	swap(a, b);
	printf("a: %d, b: %d", a, b); // a: 5, b: 10 출력
}
void swap(int &x, int &y){
	int tmp = x;
	x = y;
	y = tmp;
}
  1. x = a의 주소, y = b의 주소 참조됨(in swap)
  2. x, y 값 교환됨
  3. 주소를 통해 참조했었기 때문에 a, b 교환됨

JavaScript 에서 Call By Value와 Call By Reference의 사례는 어떤것이 있을까요?

profile
아는 것을 잘 설명할 수 있는 개발자되기👩🏻‍💻

0개의 댓글