더북(TheBook)

7.3.2 포인터로값교환하기.c

void swap(int a, int b); 
void swap_addr(int * a, int * b); ----------- ➊ 함수 선언, 매개변수를 포인터 변수로 선언

int main(void) {
    int a = 10; 
    int b = 20; 
    printf("a의 주소 : %p\n", &a);
    printf("b의 주소 : %p\n", &b);
    printf("swap() 함수 호출 전 => a : %d, b : %d\n", a, b); // 교환하기 전 변수 값 출력
    swap(a, b); // 값에 의한 호출
    printf("swap() 함수 호출 후> => a : %d, b : %d\n", a, b); // 교환한 후 변수 값 출력
    printf("swap_addr() 함수 호출 전 => a : %d, b : %d\n", a, b); 
    swap_addr(&a, &b); --------------------- ➐ 함수 호출, 주소 전달 
    printf("swap_addr() 함수 호출 후 => a : %d, b : %d\n", a, b); 
    return 0;
}

void swap(int a, int b) { (중략) } 

void swap_addr(int * a, int * b) { -------- ➋ 함수 정의 
    int temp = *a; ------------------------ ➌ 변수 temp를 선언하고 포인터 변수 a에 담긴 주소의 실제 값 저장
    *a = *b;  ----------------------------- ➍ 포인터 변수 b에 담긴 주소의 실제 값을 포인터 변수 a에 담긴 주소의 값으로 저장
    *b = temp; ---------------------------- ➎ 변수 temp의 값을 포인터 변수 b에 담긴 주소의 실제 값으로 저장
    printf("swap_addr() 함수 안 => a : %d, b : %d\n", *a, *b);
    --------------------------------------- ➏ a와 b에 담긴 주소의 실제 값 출력
} 
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.