[c] 포인터의 포인터
#include<stdio.h> void pswap(int *p1, int*p2); int main(void) { int A = 10, B = 20; int *pA, *pB; pA = &A, pB = &B; // Before call printf("pA -> : %d\n", *pA); printf("pB -> : %d\n", *pB); pswap(pA, pB); // After call printf("pA -> : %d\n", *pA); printf("pB -> : %d\n", *pB); return 0; } void pswap(int *p1, int *p2) { int *temp; temp = p1; p1 = p2; p2 = temp; } |
1. 모든 포인터 변수는 4바이트 메모리 공간
2. 가리킨다라는 말과 주소값을 갖는다는 동의어이다
#include<stdio.h> void pswap(int **p1, int **p2); int main(void) { int A = 10, B = 20; int *pA, *pB; pA = &A, pB = &B; // Before call printf("pA -> : %d\n", *pA); printf("pB -> : %d\n", *pB); pswap(&pA, &pB); // After call printf("pA -> : %d\n", *pA); printf("pB -> : %d\n", *pB); return 0; } void pswap(int **p1, int **p2) { int *temp; temp = *p1; *p1 = *p2; *p2 = temp; } |
1. 함수 생성시 ** 를 사용하여 더블 포인트 -> 포인트의 주소값을 활용하겠다.
2. 함수 몸체에서 포인터의 값과 포인터의 주소값을 헷가리지 않을 것.
3. 자료구조, 알고리즘을 배우면 포인터의 필요성을 이해하게 될 것..