더북(TheBook)

미션 35: 배열을 포인터로 접근하기 ➍

길이가 6인 int형 배열 a를 선언하고 1, 2, 3, 4, 5, 6으로 초기화하세요. 그런 다음 이 배열을 저장된 값을 거꾸로, 즉 6, 5, 4, 3, 2, 1이 되도록 변경하세요. 단, 배열 앞과 뒤를 가리키는 포인터 변수 두 개를 활용하여 저장된 값의 순서를 변경하는 방식을 이용하세요.

pointer2_11.c

#include <stdio.h>
 
main() {
    int a[6] = { 1, 2, 3, 4, 5, 6 };
    int *front = &a[0]; // 배열의 첫 번째 요소의 주소 값을 저장
    int *back = &a[5];  // 배열의 마지막 요소의 주소 값을 저장
    int i, temp;
 
    printf("배열 a 현재 내용\n");
 
    for (i = 0; i < 6; i++)
        printf("%d ", a[i]);
    printf("\n");
 
    for (i = 0; i < 3; i++) {
        temp = *front;  // front가 가리키는 값을 temp에 저장
        *front = *back; // back이 가리키는 값을 front가 가리키는 메모리에 저장
        *back = temp;   // temp의 값을 back이 가리키는 주소에 저장
        front += 1;     // 포인터 연산을 통해 front가 가리키는 주소 값에 1 증가
        back -= 1;      // 포인터 연산을 통해 back이 가리키는 주소 값에 1 감소
    }
    printf("배열 a 변경 후 내용\n");
 
    for (i = 0; i < 6; i++)
        printf("%d ", a[i]);
    printf("\n");
}

실행 결과

배열 a 현재 내용

1 2 3 4 5 6

배열 a 변경 후 내용

6 5 4 3 2 1

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.