본문 바로가기

C

[C언어] void function(int *x, int *y)

반응형
#include<stdio.h>

void change(int* x, int* y);   // 함수 선언

int main() {

	int a = 10;
	int b = 20;

	printf("함수 호출 전 : a = %d, b = %d\n", a, b);

	change(&a, &b);   // 함수에 a값이 저장된 주소값과 b값이 저장된 주소값을 전달한다.

	printf("함수 호출 후 : a = %d, b = %d\n", a, b);

	return 0;   // 프로그램을 종료한다(시스템에 제어권을 넘겨준다.)
}

void change(int* x, int* y) {   // 포인터로 매개변수를 받는다.
							    // x는 a가 저장된 주소 &a(주소값)를 받고
                                // y는 y가 저장된 주소 &b(주소값)를 받는다.

	int tmp = 0;
	printf("\n-----------------------------------------------\n\n");
	printf("함수 내 처리 전 : &a = %d, &b = %d\n", x, y);     // x와 y에는 a와 b가 각각 저장된 주소값이 저장되어 있다.
	printf("함수 내 처리 전 : a = %d, b = %d\n\n", *x, *y);   // *x는 x의 주소 안에 저장된 값을 가리킨다.

	tmp = *x;   // 포인터 *x가 가리키는 값을 tmp에 저장한다.
	*x = *y; 
	*y = tmp;   // tmp(값)를 y 주소 안에 저장한다. 그러면 *y는 y의 주소 안에 저장된 값을 가리킨다.

	printf("함수 내 처리 후 : &a = %d, &b = %d\n", x, y);
	printf("함수 내 처리 후 : a = %d, b = %d\n\n", *x, *y);
	printf("\n-----------------------------------------------\n\n");
}

 

반응형