728x90
반응형
Call by value와 Call by reference는 함수 호출방식을 의미합니다.
- 값을 전달하는 형태의 함수 호출 방식 : Call by value
- 주소 값을 전달하는 형태의 함수 호출 방식 : Call by reference
1. 값을 전달하는 형태의 함수 호출 방식 : Call by value(값)
함수를 호출할 때 인자로 전해지는 변수에 값을 전달하는 방식을 Call by value(값)라고 한다. 일반적인 변수를 이용한 함수에서 사용되며 값을 복사해서 전달하기 때문에 원래의 변수(main부분)에 영향을 주지 않는다.
#include <stdio.h>
void swap(int a, int b){
int temp;
temp = a;
a = b;
b = temp;
printf("a, b : %d, %d\n", a, b);
}
int main(){
int n, m;
n = 10;
m = 20;
printf("swap 전 : %d, %d\n", n,m);
swap(n,m);
printf("swap 후 : %d, %d\n", n,m);
return 0;
result
swap 전 : 10, 20
a, b : 20, 10
swap 후 : 10, 20
2. 주소 값을 전달하는 형태의 함수호출 : Call by reference(참조값)
main부분 즉, 원래의 변수를 바꾸기 위해선 n과 m의 주소값을 전해주면 된다. 함수에서 n과 m에 직접 접근이 가능해진 것이다.
변수 앞에 &는 주소값을 의미합니다(&변수), 그러나 배열은 &가 필요없답니다.😅
#include <stdio.h>
void swap(int *nptr1, int *nptr2)
{
int temp;
temp = *nptr1;
*nptr1 = *nptr2;
*nptr2 = temp;
}
int main(void)
{
int n = 10;
int m = 20;
printf("swap 전 : %d, %d", n, m);
swap(&n, &m);
printf("swap 후 : %d, %d", n, m);
return 0;
}
result
swap 전 : 10, 20
swap 후 : 20, 10
참고자료 : 윤성우의 열혈 C 프로그래밍
반응형
'프로그래밍 > C, C++' 카테고리의 다른 글
전역변수와 지역변수에 static 활용하기 (0) | 2020.12.13 |
---|---|
포인터 대상의 const 선언 (0) | 2020.12.12 |
c언어 기본 자료형의 종류와 데이터의 표현 범위 (0) | 2020.12.11 |