더북(TheBook)

다음 예제 코드를 실행하여 배열의 인덱스가 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로 표현이 가능합니다. 그리고 이를 통해 표현의 통일성이 이루어진다고 할 수 있습니다.

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