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