Programming/C++

[c] 포인터의 포인터

OKOK 2017. 5. 14. 14:55

#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. 자료구조, 알고리즘을 배우면 포인터의 필요성을 이해하게 될 것..