C언어 Call-By-Value / Reference 예제
저번시간에 공부했던 Call-By-Value / Reference 를 이용하여
간단한 예제를 해보도록 하겠습니다.
주석을 확인하시면, 간단하게 이해할 수 있는 문제들입니다.
1. 사용자로부터 정수를 하나 입력받는다.
2. main아닌 함수를 구현해서 값을 전달받아 제곱을 해준다
3. Call-By-Value / Reference 두 가지 형식으로 각각 작성한다.
Call-By-Value 형식
#include <stdio.h>
int Square(int n){ //주소가 아닌 값을 복사하여 변수 n에 저장함
return n * n; //제곱하여 반환
}
int main(void){
int a;
printf("Call-By-Value - 정수를 입력하세요 : ");
scanf_s("%d", &a);
a = Square(a); //&를 사용하지 않으므로 주소를 전달하는 것이 아님
printf("%d \n", a);
return 0;
}
Call-By-Reference 형식
#include <stdio.h>
void Square(int* n){ //포인터 변수를 이용하여, main의 변수 a를 가리킨다
*n = *n * *n; //포인터변수 n이 가리키는 값을 제곱해서 저장한다. 변수 a에 직접 접근한다.
}
int main(void){
int a;
printf("Call-By-Reference - 정수를 입력하세요 : ");
scanf_s("%d", &a);
Square(&a); //값이 아닌 주소를 전달한다. Square함수에서도 변수 a에 접근할 수 있다.
printf("%d \n", a);
return 0;
}