easy software

C언어 Call-By-Value / Reference 예제 본문

C언어/포인터와 배열

C언어 Call-By-Value / Reference 예제

JAVA 웹개발자 2015. 1. 19. 21:30

저번시간에 공부했던  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;
}

Comments