다음 예제 코드를 실행하여 배열의 인덱스가 0으로 시작해야 포인터 연산 및 배열의 주소 값 계산 시 표현의 통일성을 유지할 수 있음을 확인해 보세요.

    pointer2_14.c

    #include <stdio.h>
     
    main() {
        int a[] = { 1, 2, 3, 4, 5 };
     
        printf("a[0] 값은 %d\n", a[0]);
        printf("a[0] 값은 %d\n", *a);
        printf("a[0] 주소 값은 %d\n", &a[0]);
        printf("a[0] 주소 값은 %d\n", a);
     
        printf("a[4] 값은 %d\n", a[4]);
        printf("a[4] 값은 %d\n", *(a + 4));
        printf("a[4] 주소 값은 %d\n", &a[4]);
        printf("a[4] 주소 값은 %d\n", a + 4);
    }

    실행 결과

    a[0] 값은 1

    a[0] 값은 1

    a[0] 주소 값은 12122204

    a[0] 주소 값은 12122204

    a[4] 값은 5

    a[4] 값은 5

    a[4] 주소 값은 12122220

    a[4] 주소 값은 12122220

    배열의 인덱스 시작이 0부터 시작하므로 a[4]*(a + 4)와 같고, 배열의 인덱스 4의 값을 의미합니다. 또한 &a[4]a + 4와 같고 배열의 인덱스 네 번째 주소 값을 의미합니다.

    한마디로 배열의 시작을 0으로 함에 따라 a[i]*(a + i)로 표현이 가능하며, &a[i]a + i로 표현이 가능합니다. 그리고 이를 통해 표현의 통일성이 이루어진다고 할 수 있습니다.

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