두 값 바꾸기
오늘은 C언어에서 두 값을 바꾸는 방법을 정리하도록 하겠습니다. 이것을 위해 첫번째는 메인 함수 내에 있는 두 값을 바꾸어 볼 것입니다. 그리고 메인 함수 밖에서 두 값을 바꾸어 보도록 하겠습니다.
1. 메인 함수 내에서 두 값 변경
메인 함수 내에서 두 값을 변경하는 방법은 무척 간단합니다. 임시로 값을 저장해줄 temp변수를 선언하여 값을 처리하면 되기 때문입니다.
예시 코드.
#include <stdio.h>
int main(void){
int first = 0;
int second = 1;
int temp;
//first와 second값을 바꿀 것입니다.
printf("Befor swap : %d, %d\n\n", first, second);
temp = first;
first = second;
second = temp;
printf("After swap : %d, %d", first, second);
return 0;
}
출력 결과
여기서 굳이 temp이라는 변수를 사용하는 이유는, 만약 second값을 first에 바로 넣으면, 다음 second에 first값을 넣을 수 없기 때문입니다. 왜냐하면 first값은 second와 같은 값이 대입되어있기 때문이지요.
2. 메인 함수 밖에서 두 값 바꾸기
이제 swap함수를 만들어 볼 차례입니다. swap함수는 포인터를 이용 할 것인데, C언어에서 포인터란 메모리의 주소값을 저장하는 변수라고 할 수 있습니다. 즉, 값이 저장되어있는 메모리를 직접 제어한다고 볼 수 있습니다.
이렇게 포인터를 이용하려는 이유는, 지역변수는 한 지역 내(중괄호에 의해 만들어지는 영역)에서만 사용 가능하기 때문입니다. 즉, main내에서 만들어진 지역 변수는 그 함수 밖에 나가서 제어가 불가합니다. 우리는 swap이라는 main함수 바깥에서 main함수 내의 변수를 제어하려 하므로 포인터를 이용합니다.
예시 코드.
#include <stdio.h>
void swap(int* first, int*second);
int main(void){
int first = 0;
int second = 1;
int temp;
printf("Befor swap : %d, %d\n\n", first, second);
swap(&first, &second);
printf("After swap : %d, %d", first, second);
return 0;
}
void swap(int* first, int*second){
int temp;
temp = *first;
*first = *second;
*second = temp;
};
출력 결과
출력 결과를 보다시피 위에서 작성한 코드처럼 두 값이 바뀐 것을 확인할 수 있습니다.
포인터가 무엇인가에 대해서, 혹은 포인터에 대한 공부는 아래 사이트를 참조하면 될 것 같습니다.
'컴퓨터 > C, C++' 카테고리의 다른 글
[C언어] 아스키코드 활용 알파벳 판별 및 대소문자 판별 프로그램 (0) | 2021.12.07 |
---|---|
[C언어] 입력값으로 시, 분, 초 구하기 (0) | 2021.12.07 |
[C언어] 입력하는 범위 사이 n의 배수의 합 구하기 (0) | 2021.12.07 |
[C언어] 구조체 변수 값 바꾸기, 두 구조체 변수 값 변경(swap 함수) (0) | 2021.11.23 |
[C언어] (for문과 재귀함수 이용) 피보나치 수열 구하기 (0) | 2021.11.01 |
댓글