프로그램을 작성하다 보면 두 변수의 값을 바꾸어야 할 일이 많으므로,
이 일을 해주는 함수를 따로 만들어 두면 편하다.
1. 포인터를 이용하여 값을 바꾸는 함수
[ 코드 ]
#include <stdio.h>
#include <iostream>
using namespace std;
void wrong_swap(int a, int b){
int temp;
temp = a;
a = b;
b = temp;
}
int main(){
int x = 1, y = 2;
wrong_swap(x,y);
cout << "X 값 : " << x << " Y 값 : " << y << endl;
return 0;
}
[ 결과 ]
tot4766@tot4766:~/main/코딩/c++/알고리즘$ ./a.out
X 값 : 1 Y 값 : 2
>> 이 경우에는 함수의 호출로 단순히 변수값들만 호출이 되어진다.
>> X와 Y 값들 자체가 바뀌는 것이 아니다.
>> 즉, 포인터 형태로 인자를 받아야 한다.
[ 코드 ]
#include <stdio.h>
#include <iostream>
using namespace std;
void wrong_swap(int* a, int* b){
int temp;
temp =*a;
*a = *b;
*b = temp;
}
int main(){
int x = 1, y = 2;
wrong_swap(&x,&y);
cout << "X 값 : " << x << " Y 값 : " << y << endl;
return 0;
}
[ 결과 ]
tot4766@tot4766:~/main/코딩/c++/알고리즘$ ./a.out
X 값 : 2 Y 값 : 1
2. 배열의 두 원소 바꾸기
배열의 i번째 원소와 j번째 원소를 바꾸는 함수를 만들어 보자.
[ 코드 ]
#include <iostream>
using namespace std;
void swap_arr(int arr[], int i, int j){
int temp;
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
int main(void){
int arr[] = {1,5,6,78,8,6};
int i = 1, j = 2;
cout << i << "와 " << j <<"번째 원소를 바꾼다.";
cout << "변경 전" << arr[i] << "와" << arr[j] << endl;
swap_arr(arr,i,j);
cout << "변경 후" << arr[i] << "와" << arr[j] << endl;
return 0;
}
[ 결과 ]
tot4766@tot4766:~/main/코딩/c++/알고리즘$ ./a.out
1와 2번째 원소를 바꾼다.변경 전5와6
변경 후6와5
>> 배열의 원소들의 경우에는 각각의 변수를 호출하기 보다는 변수들의 메모리 주소를 호출하여
>> 변수를 받기 때문에, 포인터를 따로 사용하지 않아도 된다.
'CS > 알고리즘' 카테고리의 다른 글
[자료구조] 원형 큐 (0) | 2024.11.04 |
---|---|
[알고리즘] 0.5 연결리스트 (0) | 2022.04.16 |
[알고리즘] 0.4 은행 대기번호 관리 (0) | 2022.04.16 |
[알고리즘] 0.3 배열 회전 (0) | 2022.04.16 |
[알고리즘] 0.1 최대와 최소 (0) | 2022.04.16 |