코딩뚠뚠

Call by [value & reference] 본문

공부/기타

Call by [value & reference]

로디네로 2021. 1. 10. 10:13
반응형

 

아는 지인이 면접장에서 Call by value와 Call by reference에 대한 질문을 받았다고 한다. 그 말을 들은 순간 음? 느낌적으로 설명할순있는데 정확히 설명할수가 없네 = 모르는거다 라고 생각해서 포스팅을 하며 정리해보려 한다.

 


 

우선 이 둘은 모두 함수 호출방식이다.

호출하는 방식에의 차이에 따라 나눠 놓은 것

 


 

1. Call by value

 

말 그대로 값에 의한 호출 이라는 뜻으로 C언어에는 call by value만 존재한다.

 

함수 호출시 '값'을 넘겨준다는 뜻이다.

 

인자로 전달되는 변수를 함수의 매개변수에 복사한다.

 

인자로 전달한 변수와는 별개의 변수가 되며, 매개변수를 변경해도 원래의 변수에는 영향을 미치지않는다.

 

-> 원본값을 바꿀 필요가 없다면 call by value 사용

void swap( int a, int b){
    int temp;
    temp = a;
    a = b;
    b = temp;
}

 

2. Call by reference

 

함수에서 값을 전달하는 대신 주소값을 전달하는 방식

 

C언어에서 포인터를 사용해서 주소값을 넘겨주게 된다면 이는 Call by adress 일것이다.

 

하지만 결과적으로 address를 통해서도 call by reference와 같이 사용할 수 있으므로 같이 설명하기도 한다.

void swap( int *a, int *b){
    int temp;
    temp = *a;
    *a = *b;
    *b = temp;
}

 

반응형

'공부 > 기타' 카테고리의 다른 글

딥러닝, 데이터분석 pandas 기본사용  (0) 2021.04.06
파이썬 self와 __init__ 에 대해  (0) 2021.04.05
Git 개념 및 사용 2  (0) 2021.02.07
Git 개념 및 사용법 1  (0) 2021.02.07
docker 개념과 기본 사용  (0) 2021.02.04