삽질의 현장/- .NET

#009_닷넷(.NET)_.Net Framework 기본 - 배열

shovelman 2015. 10. 23. 00:00


안녕하세요 삽잡이입니다.


이번 시간에는 배열에 대해서 알아보도록 하겠습니다.


배열은 int[], string[], Point[], Test[] 등등 만들 수 있습니다.

그리고 'int[] iarr = new int[5];' 이런식으로 구현을 하지요...

여기서 iarr은 '참조자', '참조 변수'라고 부릅니다.

다른 곳에서는 일반적으로 객체라고 부르지만 정확하게는

'new int[5]'가 객체입니다.


C#이나 닷넷의 배열은

int[]와 같은 형태를 클래스로 부릅니다.

즉, int[]는 int형 array 클래스를 말하는 것입니다.


iarr은 클래스의 객체라고 부르지만, 정확히는 클래스 객체의 참조 변수입니다.

즉, 참조라고 부르는 것입니다. 간단하게 포인터와 같다고 생각하면 됩니다.

사실 진짜로 내부에 구현이 되있습니다. 

우리는 단지 참조자라는 사용하기 쉬운 형태로 사용할 뿐입니다...


진짜 객체는 new int[5] 이지요... new 연산자가 붙지 않았습니까...

그리고 이 객체는 Heap 영역에 만들어집니다.


닷넷은 내부적으로 Global Data 영역을 사용할 수 있으나

외형적으로는 Global Data 영역 자체가 없습니다.

우리가 볼 때에는 오직 Stack과 Heap 영역만 보이는 것입니다.


new int[5]는 Heap 영역에 int 형 배열 객체가 만들어지는 뜻입니다.

int[]라는 배열 객체가 단 하나 만들어질 뿐입니다.

그 다음 stack 영역에서 참조자 iarr 이 만들어지는 것입니다.

단지 int[] 객체를 참조할 뿐이지요...

그래서 참조자 객체라고 부르는 것입니다.

참조 없이 객체를 쓸 수 없지 않습니까...

즉, iarr 없이는 객체와 대화를 나눌 수 없다는 것입니다.

따라서 iarr을 참조자 및 객체라고 부른다는 사실을 기억하시길 바랍니다.


int arr[5]는 int[]형 배열입니다...

따라서 객체 내에 다섯개의 int형 객체를 보관할 수 있는 것입니다.

배열은 연산자 중복에 의해서 인덱스 연산이 가능합니다.

즉, 참조자를 가지고 iarr[0] 처럼 부를 수 있게 됩니다.

다시 말해서 원소는 참조자로부터 인덱서(대괄호)를 사용해서 구할 수 있죠...


이번 시간은 여기까지 하도록 하겠습니다.


이상 삽잡이였습니다!