안녕하세요 오늘은 call by value vs call by reference 에 대해 알아보겠습니다
구글이나 네이버에 call by value vs call by reference를 검색하면 수천개의 글들이 나옵니다
그 만큼 중요한 내용입니다
call by value와 call by reference를 굳이 비교하는 이유는 함수를 작성할때 중요합니다
어떤 함수를 호출할때 매개변수로 int형 변수를 넘긴다고하고, +1를 한다고 해봅시다
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include <stdio.h> int upupup(int a) { a+=1; } int main(void) { int value = 0; upupup(value); printf("value : %d ",value); } |
결과값
value : 0
11번줄에서 value를 매개변수로 넣으면 값이 복사가 됩니다
그래서 5번째줄에 a가 1이되고 value는 그냥 여전히 0이 됩니다
이러한것을 call by value라고 합니다
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include <stdio.h> int upupup(int* a) { *a +=1 ; } int main(void) { int value = 0; upupup(&value); printf("value : %d ",value); } |
11번째줄에서 value의 주솟값을 넘깁니다
3번째줄에서 value의 주솟값을 a에 저장합니다
5번째줄에서 a가 가리키는 값(value)을 1 증가시킵니다
이러한 것을 call by reference라고 합니다
결론 ; call by value는 함수에서 값을 전달할 때 전달인자의 값을 매개변수에 저장해서 사용하는 것이고,
call by reference는 함수에서 값을 전달할 때 전달인자의 주소를 매개변수에 저장해서 사용하는 것이다
참고 : 전달인자 vs 매개변수 차이
'프로그래밍 언어 > C언어' 카테고리의 다른 글
C언어 a,'a',"a' 차이점(변수,문자,문자열) (0) | 2020.07.26 |
---|---|
C언어 & && , | ||차이점 (1) | 2020.07.12 |
C언어 2차원 배열이란 (0) | 2020.07.06 |
C언어 포인터에 관해서 (0) | 2020.06.13 |
C언어 배열의 변수명에 &를 붙이면? (0) | 2020.05.14 |