easy software

C언어 Call-By-Reference 예제(변수자리 바꾸기) 본문

C언어/포인터와 배열

C언어 Call-By-Reference 예제(변수자리 바꾸기)

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

이번 예제는 Call-By-Reference를 이용하여, 변수의 자리를 바꾸는 프로그램을 구현하겠습니다.

 

main이 아닌 별도의 함수를 두고 해야 하는 작업입니다.

 

초기값은 a = 10, b = 20, c = 30 이고,

 

프로그램이 원하는 최종 출력값은 a = 30, b = 10, c = 20 입니다.

 

 

 

코드의 주석을 잘 보시고 이해해보시기 바랍니다.

 

#include <stdio.h>

 

//a에는 c의 값, b에는 a의 값, c에는 b의값.
//즉, 서로 삼각형 모양의 형태로 값을 변경하는 함수
void swap(int* a, int* b, int* c){ //포인터 변수로 주소를 전달받음
 
     int temp = *a; //임시변수에 *a가 가리키는 값 저장
     *a = *c; //*a가 가리키는 값을 *c가 가리키는 값으로 변경
     *c = *b; //*c가 가리키는 값을 *b가 가리키는 값으로 변경
     *b = temp; //*b가 가리키는 값을 temp값으로 변경

 

}

 

int main(void){

 

 int a = 10;
 int b = 20;
 int c = 30;

 

 swap(&a, &b, &c); //주소 전달

 

 printf("변경된 a의 값 : %d \n", a);
 printf("변경된 b의 값 : %d \n", b);
 printf("변경된 c의 값 : %d \n", c);

 

 return 0;


}

Comments