안녕하세요
ITSkeleton입니다.
이번에는
2차원 배열에 대하여 설명해 드릴텐데요
1차원 배열같은 경우
int array[5];
와 같이 생성할 수 있습니다.
그렇다면 2차원은 어떻게 할까요?
int array[5][5];
이렇게 적어주시면 됩니다.
엄청 간단하지요?
int array[2][5];
0-0 |
0-1 |
0-2 |
0-3 |
0-4 |
1-0 |
1-1 |
1-2 |
1-3 |
1-4 |
저런 모양으로 공간이 할당 된다고 보시면 됩니다,
그렇다면
2차원 배열의 초기화는 어떻게 시켜줄까요?
int array[2][5];
위와 똑같은 것으로 설명해드리도록 하겟습니다.
array[2][5] = {{1,2,3,4,5}, {1,2,3,4,5}};
위와 같은 형태로 해주시면 됩니다.
array[2][5] = {{1} , {2,3,4}};
그렇다면 위와 같이 적으면 어떻게 저장이 될까요?
[0][0] = 1 의 값이 들어 갈겁니다.
[0][1]~[0][4]의 값에는 0이라는 값이 자동으로 부여됩니다.
이해가 되시나요??
그렇다면 [1][0]~[1][4]에 들어가는 값은 한번 생각해서 결론을 내려보시길 바랍니다.
답 : [1][0] = 2, [1][1] = 3, [1][2] = 4, [1][3] = 0, [1][4] =0
int array[][3] = {1,2,3,4,5,6};
과연 위의 소스는 올바른 소스일까요??
네. 올바른 소스입니다.
에러를 띄우지않고 컴파일러에서 알아서 처리를 해줍니다.
비어있는 첫번째 차원을 알아서 2로 잡아주고
[0][0]~[0][2] 에 1,2,3 을 각각 넣어주고
[1][0]~[1][2] 에 4,5,6 을 각각 넣어줍니다.
참 똑똑한 친구지요?
그렇다면
int array[2][] = {1,2,3,4,5,6};
이건 어떨까요?
정답은 '에러를 나타낸다' 입니다.
이전같은 경우에는 두번째 차원의 크기가 정해져 있었죠.
그래서 컴파일러가 알아서 잘라서 넣어줄 수 있습니다.
하지만 위 같은 경우는 두번째 차원이 비어있습니다.
그렇게되면 두번째 차원의 크기를 알수가 없기때문에
값을 분할해서 넣을 수가 없는 상황이 되버리죠.
바로 에러를 나타냅니다.
알고 쓰신다면 편리하지만
모르고 막쓰신다면 엄청난 에러를 보실 수 있을 겁니다.
지금까지 2차원 배열 설명, 초기화에 대하여 설명해 드렷습니다.
긴글 봐주셔서 감사합니다,
^~^