1. Call By Value (값에 의한 호출)
- 함수의 매개변수에 넣고자 하는 인자의 '값'을 복사한다.
- 함수가 실행되면, 매개변수는 값만 같은 뿐 별개의 변수이다.
- 함수가 종료되고 해당 스코프에 있던 매개변수는 사라지고, 원래 있던 인자에는 영향이 없음
2. Call By Reference (주소에 의한 호출, 참조에 의한 호출)
- 인자의 '주소'를 매개변수에 복사한다.
- 매개변수가 대상 인자의 주소값을 가지므로, 새로운 값을 업데이트 하는 등 영향을 준다.
/////// 실행 코드 ///////
#include <stdio.h>
void callByReference(int *input);
void callByValue(int input);
int main()
{
int a = 100;
printf("값 %d\n", a);
callByValue(a);
printf("Value : 값 %d\n", a);
callByReference(&a);
printf("Reference : 값 %d\n", a);
}
void callByReference(int *input)
{
*input = 50;
}
void callByValue(int input)
{
input = 30;
}
/////// 실행 결과 ///////
값 100
Value : 값 100
Reference : 값 50
'Language > C, C++' 카테고리의 다른 글
[ C ] scanf / scanf_s 차이점 (0) | 2021.01.07 |
---|