본문 바로가기

C_C++

포인터의 포인터 - swap함수의 호출

case1 - 효과 없는swap 함수의 호출 (Call By Value)

/* ptr_swap1.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;
// 함수 호출 전 
printf("pA가 가리키는 변수 : %d \n", *pA);
printf("pB가 가리키는 변수 : %d \n", *pB);

pswap(pA, pB);

//함수 호출 후
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;
}

결과


----------------------------------------------------------------------

case2 - 더블 포인터 입장에서의 swap (Call By Reference)

/* ptr_swap2.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;
// 함수 호출 전 
printf("pA가 가리키는 변수 : %d \n", *pA);
printf("pB가 가리키는 변수 : %d \n", *pB);

pswap(&pA, &pB);

//함수 호출 후
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;
}


결과

'C_C++' 카테고리의 다른 글

2차원 배열 이름의 포인터 타입 2  (0) 2010.11.26
2차원 배열 이름의 포인터 타입  (0) 2010.11.26
포인터의 포인터  (0) 2010.11.26
2차원 배열! 선언과 동시에 초기화  (0) 2010.11.26
다차원 배열의 예  (0) 2010.11.26