언어/C

c에서 pointer와 swap의 관계

조규현15 2015. 6. 28. 21:00
반응형

c에서는 주로 call-by-reference로 data swap을 한다.

하지만, 2가지 방법을 생각할 수 있다.

첫 번째는 value의 직접교환을 통한 data swap이고

두 번째는 value's address의 교환을 통한 data swap이다.


이것을 왜 알아보는가? doublepointer를 사용하면 call-by-function을 이해하기 쉽기 때문이다.


#include<stdio.h>


void DoublePointer(int **a, int **b)

{

int *c;


c = *a;

*a = *b;

*b = c;

}

void AddressSwap(int *a, int *b)

{

int c;


c = *a;

*a = *b;

*b = c;

}

void main()

{

int a = 3, b = 5;

int *pa = &a, *pb = &b;


printf("AddressSwap--------\n");

printf("prev %d %d %x %x \n", a, b, &a, &b);

AddressSwap(&a, &b);

printf("aftr %d %d %x %x \n", a, b, &a, &b);


printf("DoublePointer--------\n");

printf("prev %d %d %x %x \n", *pa, *pb, pa, pb);

DoublePointer(&pa, &pb);

printf("aftr %d %d %x %x \n", *pa, *pb, pa, pb);

}




참고 : http://chanywa.com/343

반응형

'언어 > C' 카테고리의 다른 글

move semantics  (0) 2015.11.25
swap 매크로  (0) 2015.06.28
MFC Image Viewer  (0) 2015.02.09
file 복사 프로그램  (0) 2015.01.30
c File IO  (0) 2015.01.30