값을 서로 바꾸는 것을 출력하면서 주소값에 대한 정보를 확인
#include<stdio.h>
void
swap(int a, int b);
void
swap_addr(int * a, int * b);
int
main(void)
{
// SWAP
int a = 10;
int b = 20;
printf("a의
주소 : %d\n", &a);
printf("b의
주소 : %d\n", &b);
// a 와 b 의
값을 바꾼다.
printf("swap 함수 전 => a: %d, b :
%d\n", a, b);
swap(a, b);
printf("swap 함수 후 => a: %d, b :
%d\n", a, b);
// 값에
의한 복사 (Call by Value) -> 값만 복사한다는 의미
//주소값을
넘기면? 메모리 공간에 있는 주소값 자체를 넘기면..
철수네처럼
printf("(주소값
전달)swap 함수 전 => a: %d, b :
%d\n", a, b);
swap_addr(&a, &b);
printf("(주소값
전달)swap 함수 후 => a: %d, b :
%d\n", a, b);
return 0;
}
void
swap(int a, int b)
{
printf("(swap 함수내) a의 주소
: %d\n", &a);
printf("(swap 함수내) b의 주소
: %d\n", &b);
int temp = a;
a = b;
b = temp;
printf("swap 함수 내 => a: %d, b :
%d\n", a, b);
}
void
swap_addr(int * a, int * b)
{
int temp = *a;
*a = *b;
*b = temp;
printf("swap 함수 내 => a: %d, b :
%d\n", *a, *b);
}
a와 b는 temp에 넣엇다가 덮어씌우면 주소값이 바뀌는데
그것은 새로운 저장공간에 넣엇다는 것을 이야기한다.
주소을 찾아서 복사를 하면 스왑함수가 끝난 뒤에도 유지가 된다.
댓글 없음:
댓글 쓰기