혼자 공부하는 C 언어 - YES24
혼자 해도 충분하다! 1:1 과외하듯 배우는 C 프로그래밍 자습서이 책은 독학으로 C 언어를 배우는 입문자가 ‘꼭 필요한 내용을 제대로’ 학습할 수 있도록 구성했다. ‘무엇을’ ‘어떻게’ 학
www.yes24.com
#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;
}
이 예제는 문자열을 바꿔 출력 출력하지만 문자열 자체를 바꾸지 않습니다. 문자열을 연결하는 포인터의 값을 바꾸면 연결 상태가 바뀌므로 이후에 포인터를 사용하면 마치 문자열을 바꾼 것처엄 사용할 수 있습니다.
이 예제는 포인터의 값을 수시로 바꾸기 위해 그 기능을 함수로 만듭니다. 두 변수의 값을 바꾸는 함수는 변수의 주소를 인수로 주고 함수가 그 주소를 간접 참조하여 변수의 값을 바꿔야 합니다. 그런데 11행에서 바꾸고자 하는 변수 pa, pb는 포인터이므로 함수의 인수로 포인터의 주소를 줘야하고 결국 그 값을 받는 매개변수로 이중 포인터가 필요합니다.
'프로그래밍언어 > C 언어' 카테고리의 다른 글
[혼자 공부하는 C언어] 배열 요소의 주소와 배열의 주소 (0) | 2022.12.13 |
---|---|
[혼자 공부하는 C언어] 이중 포인터 활용 2 : 포인터 배열을 매개변수로 받는 함수 (0) | 2022.12.13 |
[혼자 공부하는 C언어] 이중 포인터 개념 (0) | 2022.12.13 |
[혼자 공부하는 C언어] 2차원 배열처럼 활용하는 포인터 배열 (0) | 2022.12.13 |
[혼자 공부하는 C언어] 포인터 배열 선언과 사용 (0) | 2022.12.13 |