JUST GO

[C] swap 함수 본문

C/학습내용

[C] swap 함수

root_go 2022. 10. 7. 16:06
  • 값에 의한 전달 : swap 함수


  • 포인터에 의한 전달 : swap 함수


  • 예제 : 포인터에 의한 전달 방법으로 구현한 swap 함수
#include<iostream>

void swap(int* x, int* y) { // x, y는 인자의 주소이다.
	int temp = *x;          // x가 가리키는 변수의 값을 temp에 저장한다.
	*x = *y;                // y가 가리키는 변수의 값을 x가 가리키는 변수에 저장한다.
	*y = temp;              // temp를 y가 가리키는 변수에 저장한다.
}

int main(void) {
	int a = 3, b = 7;

	printf("a = %d, b = %d\n", a, b);
	swap(&a, &b); // 포인터에 의한 전달
	printf("a = %d, b = %d\n", a, b);
	return 0;
}
  • 실행결과
a = 3, b = 7
a = 7, b = 3

  • 함수의 처리 결과를 매개변수로 전달하는 방법

      º 함수의 원형을 정할 때, 처리 결과를 저장할 변수를 가리키는 포인터형으로 매개변수를 선언한다.

void get_sum_product(int x, int y, int *sum, int *product);

      º 함수를 호출할 때, 처리 결과를 받아올 변수의 주소를 전달한다.

int result1, result2;
get_sum_product(10, 20, &result1, &result2);

      º 함수를 정의할 때, 포인터형의 매개변수가 가리키는 곳에 처리 결과를 저장한다.

void get_sum_product(int x, int y, int *sum, int *product)
{
	*sum = x + y;
    *product = x * y;
}

  • 예제 : 함수의 처리 결과를 매개변수로 전달하는 경우
#include<iostream>

// 1. 처리 결과를 저장할 변수를 가리키는 포인터형으로 매개변수를 선언한다.
void get_sum_product(int x, int y, int* sum, int* product) {
// 3. 포인터형의 매개변수가 가리키는 곳에 처리 결과를 저장한다.
	*sum = x + y;
	*product = x * y;
}


int main(void) {
	int result1, result2;
// 2. 함수를 호출할 때 처리 결과를 받아올 변수의 주소를 전달한다.
	get_sum_product(10, 20, &result1, &result2);
	printf("sum = %d, product = %d\n", result1, result2);
	return 0;
}
  • 실행결과
sum = 30, product = 200

 

'C > 학습내용' 카테고리의 다른 글

[C] 포인터(2)  (0) 2022.10.06
[C] 배열  (0) 2022.10.06
[C] 함수  (0) 2022.10.06
[C] 반복문(2)  (1) 2022.10.05
[C] 반복문  (1) 2022.10.05