#include <stdio.h>
void swap_ptr(char **ppa, char **ppb);
int main(void){
char *pa = "success";
char *pb = "failure";
printf("pa -> %s, pb -> %s\n", pa, pb);
swap_ptr(&pa, &pb);
printf("pa -> %s, pb - > %s\n", pa, pb);
return 0;
}
void swap_ptr(char **ppa, char **ppb){
char *pt;
pt = *ppa;
*ppa = *ppb;
*ppb = pt;
}
### `main` 함수
- `char *pa = "success";`와 `char *pb = "failure";`를 통해, 두 개의 문자열 포인터 `pa`와 `pb`가 각각 "success"와 "failure" 문자열 리터럴을 가리키도록 초기화됩니다.
- 초기 상태에서 `pa`와 `pb`가 가리키는 값들이 출력됩니다.
- `swap_ptr(&pa, &pb);` 호출을 통해, `pa`와 `pb` 포인터가 가리키는 주소가 서로 교환됩니다.
- 교환 후의 상태에서 `pa`와 `pb`가 가리키는 값들이 다시 출력되어, 두 포인터가 가리키는 문자열이 성공적으로 교환된 것을 확인할 수 있습니다.
### `swap_ptr` 함수
- 이 함수는 `char **ppa`와 `char **ppb` 두 개의 이중 포인터를 매개변수로 받습니다. 이중 포인터는 포인터의 주소, 즉 포인터를 가리키는 포인터입니다.
- 임시 포인터 `pt`를 선언하여 `*ppa`의 값을 임시로 저장합니다. 여기서 `*ppa`는 `pa`가 가리키는 주소입니다.
- `*ppa`에 `*ppb`의 값을 할당하여 `pa`가 `pb`가 가리키던 주소를 가리키게 합니다.
- 마지막으로 `*ppb`에 임시 포인터 `pt`가 가리키는 주소를 할당하여 `pb`가 처음에 `pa`가 가리키던 주소를 가리키게 합니다.
### 결과
이 코드의 실행 결과, 처음에 "success"를 가리키던 `pa`는 "failure"를 가리키게 되고, 처음에 "failure"를 가리키던 `pb`는 "success"를 가리키게 됩니다. 이 예제는 포인터의 포인터를 사용하여 두 포인터 변수의 값을 서로 교환하는 방법을 보여줍니다.
'개념 > 혼자 공부하는 C언어' 카테고리의 다른 글
chapter 15) 포인터 배열의 값을 출력하는 함수 (0) | 2024.09.14 |
---|---|
chapter 15) 주소로 쓰이는 배열명과 배열의 주소 비교 (0) | 2024.09.13 |
chapter 15) 배열 포인터로 3차원 배열의 값 출력 (0) | 2024.09.11 |
chapter 14) 2차원 배열의 값을 출력하는 함수 (0) | 2024.09.10 |
chapter 14) 2차원 배열의 다양한 초기화 (0) | 2024.09.09 |