728x90
반응형
포인터에 대한 간단한 요약으로는 다음 사진과 같다.
그림과 같이 포인터는 변수의 메모리 주소'만' 가리키는 화살표와 같다. 이를 이용해서 swap 함수를 만들어보자.
두 수를 a, b에 입력받고 출력한 뒤, 이 두 수를 서로 바꿔주는 swap 함수를 만들어 바뀐 수 또한 출력할 예정이다.
완성 코드는 다음과 같다.
#include <stdio.h>
void swap(int* a, int* b);
int main() {
int a, b = 0;
scanf("%d %d", &a, &b);
printf("스왑하기 전 : %d %d\n", a, b);
swap(&a, &b);
printf("스왑한 후 : %d %d\n", a, b);
return 0;
}
void swap(int* a, int* b) {
int tmp =*a;
*a = *b;
*b = tmp;
}
|
cs |
a와 b는 지역변수이므로 main을 벗어나면 값이 소실된다. 그러므로 a와 b의 주소 값을 함수에 넘겨줘야한다. swap(&a, &b);
주소값을 저장할 수 있는 변수는 포인터 변수이므로 파라미터에는 int* a, int* b가 들어가게 된다.
void swap(int* a, int* b) {
int tmp =*a;
*a = *b;
*b = tmp;
}
|
cs |
두 수를 바꾸기 위해 임시 변수인 tmp를 생성하고 역참조를 이용해 a와 b의 값을 가져와 바꿔주면 된다.
728x90
반응형
'C' 카테고리의 다른 글
연결리스트(Linked list) 마지막에서 두번째 데이터 출력 - C 언어 (0) | 2021.04.09 |
---|---|
연결리스트(Linked list) 생성 / 출력 - C 언어 (0) | 2021.04.09 |
C - While문 이용하여 *별로 삼각형 만들기 3 (0) | 2020.10.08 |
While문 이용하여 *별로 삼각형 만들기 2 - C 언어 (0) | 2020.10.06 |
While문 이용하여 * 별로 삼각형 만들기 - C 언어 (0) | 2020.10.06 |