Call By value 와 Call By reference
2020. 1. 21. 01:27ㆍ프로그래밍/C
-Call By value : 값을 전달하는 형태의 함수 호출이다.
-Call By reference : 주소 값을 전달하는 형태의 함수호출이다.
1. Call By value 예제
void Swap(int n1, int n2) {
int temp = n1;
n1 = n2;
n2 = temp;
printf("Swap -> num1: %d num2: %d \n", n1, n2);
}
int main(void) {
int num1 = 1, num2 = 2;
printf("main -> num1: %d num2: %d \n", num1, num2);
Swap(num1, num2);
printf("main -> num1: %d num2: %d \n", num1, num2);
return 0;
}
실행결과
Swap()에서 값만 받아와 내부에서만 처리하였지만 값을 넘기지 못하고있다.
-Call By value
장점: 원본 값이 변경되지가 않으며 안전하다.
단점: 메모리 사용이 많아진다.
2. Call By reference예제
void Swap(int* ptr1, int* ptr2) {
int temp = *ptr1;
*ptr1 = *ptr2;
*ptr2 = temp;
}
int main(void) {
int num1 = 1, num2 = 2;
printf("main -> num1: %d num2: %d \n", num1, num2);
Swap(&num1, &num2);
printf("Swap -> num1: %d num2: %d \n", num1, num2);
return 0;
}
실행결과
Swap함수에서 변수의 주소값을 받아 해당 변수에 직접 접근한다.
main함수에서 Swap함수가 호출되면 num1과 num2의 값이 서로 바뀐다.
-Call By reference
장점: 직접 참조하여 즉시 적용된다.
단점: 원본 값이 직접 참조하여 위험도가 있다.
'프로그래밍 > C' 카테고리의 다른 글
열혈 C프로그래밍 16-1 (0) | 2020.01.29 |
---|---|
열혈 C프로그래밍 14-1 (0) | 2020.01.21 |
연습문제 (0) | 2020.01.21 |
열혈 C프로그래밍 13-1 (0) | 2020.01.21 |
열혈 C 프로그래밍 12-1 (0) | 2020.01.17 |