미션 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

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