C++

[ITSkeleton] C++ 2차원 배열(설명, 초기화)

ITSkeleton 2016. 10. 17. 15:39
728x90
반응형

안녕하세요

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차원 배열 설명, 초기화에 대하여 설명해 드렷습니다.

긴글 봐주셔서 감사합니다,


^~^

728x90
반응형