더북(TheBook)

이처럼 배열의 이름은 곧 자신 배열의 첫 번째 인덱스 주소 값과 같습니다. 큰 범위 배열 관점에서 배열의 이름이 a라면, 한 단계 작은 범위의 배열 관점에서는 a[0]a[1] 이렇게 두 개의 배열 이름을 가집니다. 앞으로 “배열 이름은 곧 주소다”라고 생각하면 코드를 이해하기 쉬울 것입니다.

이제 다음 예제 코드를 통해 2차원 배열과 주소의 상관 관계를 직접 확인해 봅시다.

pointer2_3.c

#include <stdio.h>
 
main() {
    int a[2][3] = { 1, 2, 3, 4, 5, 6 }; // 2차원 정수형 배열 선언과 동시에 초기화
 
    printf("배열 a 시작 메모리 주소는 %d\n", a); // 배열의 이름
    printf("배열 a에 포함된 첫 번째 배열의 시작 주소는 %d\n", a[0]); // {1, 2, 3}을 의미
    printf("배열 a 시작 메모리 주소는 %d\n", &a[0][0]);
    printf("배열 a에 포함된 두 번째 배열의 시작 주소는 %d\n", a[1]);
    printf("배열 a에 포함된 두 번째 배열의 시작 주소는 %d\n", &a[1][0]);
    printf("\n");
    printf("배열 a의 크기는 %d 바이트\n", sizeof(a));
    printf("배열 a에 포함된 첫 번째 배열의 크기는 %d바이트\n", sizeof(a[0]));
    printf("배열 a에 포함된 두 번째 배열의 크기는 %d바이트\n", sizeof(a[1]));
}

실행 결과

배열 a 시작 메모리 주소는 3864392

배열 a에 포함된 첫 번째 배열의 시작 주소는 3864392

배열 a 시작 메모리 주소는 3864392

배열 a에 포함된 두 번째 배열의 시작 주소는 3864404

배열 a에 포함된 두 번째 배열의 시작 주소는 3864404

배열 a의 크기는 24 바이트

배열 a에 포함된 첫 번째 배열의 크기는 12바이트

배열 a에 포함된 두 번째 배열의 크기는 12바이트

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