JUST GO
[C] swap 함수 본문
- 값에 의한 전달 : 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 |